diff --git a/Platform/Apple/tools/jace/src/main/java/jace/assembly/AcmeCrossAssembler.java b/Platform/Apple/tools/jace/src/main/java/jace/assembly/AcmeCrossAssembler.java index 62630ab2..df80672d 100644 --- a/Platform/Apple/tools/jace/src/main/java/jace/assembly/AcmeCrossAssembler.java +++ b/Platform/Apple/tools/jace/src/main/java/jace/assembly/AcmeCrossAssembler.java @@ -1,11 +1,14 @@ package jace.assembly; -import org.ibex.nestedvm.UnixRuntime; +import org.ibex.nestedvm.UnixRuntime; // Auto-generated file, don't perform any code lint checks - @SuppressWarnings("all") +@SuppressWarnings("all") -/* This file was generated from acme by Mips2Java on Tue Jul 14 00:46:52 CDT 2015 */ +/* + * This file was generated from acme by Mips2Java on Thu Feb 15 14:30:54 CST + * 2024 + */ public final class AcmeCrossAssembler extends UnixRuntime { /* program counter */ @@ -13,339 +16,343 @@ public final class AcmeCrossAssembler extends UnixRuntime { /* General Purpose registers */ private final static int r0 = 0; - private int 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, - hi = 0, lo = 0; + private int 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, + hi = 0, lo = 0; /* FP registers */ - private int f0, f1, f2, f3, f4, f5, f6, f7, - f8, f9, f10, f11, f12, f13, f14, f15, - f16, f17, f18, f19, f20, f21, f22, f23, - f24, f25, f26, f27, f28, f29, f30, f31; + private int f0, f1, f2, f3, f4, f5, f6, f7, + f8, f9, f10, f11, f12, f13, f14, f15, + f16, f17, f18, f19, f20, f21, f22, f23, + f24, f25, f26, f27, f28, f29, f30, f31; /* FP Control Register */ private int fcsr = 0; private final void run_10000() throws ExecutionException { /* 0x10000 - 0x10200 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x10000: r29 = r29 + -32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - if(r0 >= 0) { - /* Next insn is delay slot */ - r31=0x10010; - pc=0x10010; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r0 >= 0) { + /* Next insn is delay slot */ + r31 = 0x10010; + pc = 0x10010; continue; } case 0x10010: - /* Next insn is delay slot */ - r31=0x10018; - pc=0x101ac; + /* Next insn is delay slot */ + r31 = 0x10018; + pc = 0x101ac; continue; case 0x10018: - if(r0 >= 0) { - /* Next insn is delay slot */ - r31=0x10020; - pc=0x10020; + if (r0 >= 0) { + /* Next insn is delay slot */ + r31 = 0x10020; + pc = 0x10020; continue; } case 0x10020: - /* Next insn is delay slot */ - r31=0x10028; - pc=0x10208; - run_10200(); return; + /* Next insn is delay slot */ + r31 = 0x10028; + pc = 0x10208; + run_10200(); + return; case 0x10028: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; case 0x10038: r29 = r29 + -32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - if(r0 >= 0) { - /* Next insn is delay slot */ - r31=0x10048; - pc=0x10048; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r0 >= 0) { + /* Next insn is delay slot */ + r31 = 0x10048; + pc = 0x10048; continue; } case 0x10048: - /* Next insn is delay slot */ - r31=0x10050; - pc=0x100e4; + /* Next insn is delay slot */ + r31 = 0x10050; + pc = 0x100e4; continue; case 0x10050: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; case 0x10060: - r4 = 7 << 16; - r2 = 7 << 16; - r4 = r4 + 12296; - r2 = r2 + 12299; + r4 = 6 << 16; + r2 = 6 << 16; + r4 = r4 + -15344; + r2 = r2 + -15341; r2 = r2 - r4; - r2 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ + r2 = (r2 & 0xffffffffL) < (7 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ r25 = 0 << 16; - pc=0x10088; + pc = 0x10088; continue; } r25 = 0 << 16; case 0x10080: - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; case 0x10088: r25 = r25 + 0; - if(r25 == r0) { - /* Next insn is delay slot */ - pc=0x10080; + if (r25 == r0) { + /* Next insn is delay slot */ + pc = 0x10080; continue; } - /* Next insn is delay slot */ - pc=r25; + /* Next insn is delay slot */ + pc = r25; return; case 0x1009c: - r4 = 7 << 16; - r2 = 7 << 16; - r4 = r4 + 12296; - r2 = r2 + 12296; + r4 = 6 << 16; + r2 = 6 << 16; + r4 = r4 + -15344; + r2 = r2 + -15344; r2 = r2 - r4; r2 = r2 >> 2; r3 = r2 >>> 31; r2 = r3 + r2; r5 = r2 >> 1; - if(r5 != r0) { - /* Next insn is delay slot */ + if (r5 != r0) { + /* Next insn is delay slot */ r25 = 0 << 16; - pc=0x100d0; + pc = 0x100d0; continue; } r25 = 0 << 16; case 0x100c8: - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; case 0x100d0: r25 = r25 + 0; - if(r25 == r0) { - /* Next insn is delay slot */ - pc=0x100c8; + if (r25 == r0) { + /* Next insn is delay slot */ + pc = 0x100c8; continue; } - /* Next insn is delay slot */ - pc=r25; + /* Next insn is delay slot */ + pc = r25; return; case 0x100e4: r29 = r29 + -40; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - r19 = 7 << 16; - addr=r19+14512; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + r19 = 6 << 16; + addr = r19 + -13832; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r2 = tmp; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - if(r2 != r0) { - /* Next insn is delay slot */ - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - pc=0x10190; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + if (r2 != r0) { + /* Next insn is delay slot */ + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + pc = 0x10190; continue; } - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r18 = 7 << 16; - r17 = 7 << 16; - r18 = r18 + -14840; - r17 = r17 + -14836; - r16 = 7 << 16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r18 = 5 << 16; + r17 = 5 << 16; + r18 = r18 + 18440; + r17 = r17 + 18444; + r16 = 6 << 16; r17 = r17 - r18; - r2 = readPages[(r16+14516)>>>12][((r16+14516)>>>2)&0x3ff]; + r2 = readPages[(r16 + -13828) >>> 12][((r16 + -13828) >>> 2) & 0x3ff]; r17 = r17 >> 2; r17 = r17 + -1; r3 = ((r2 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ + if (r3 == r0) { + /* Next insn is delay slot */ r2 = r2 + 1; - pc=0x10164; + pc = 0x10164; continue; } r2 = r2 + 1; case 0x10138: r3 = r2 << 2; r3 = r18 + r3; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - writePages[(r16+14516)>>>12][((r16+14516)>>>2)&0x3ff] = r2; - pc=r3; - r31=0x10150; + r3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + writePages[(r16 + -13828) >>> 12][((r16 + -13828) >>> 2) & 0x3ff] = r2; + pc = r3; + r31 = 0x10150; return; case 0x10150: - r2 = readPages[(r16+14516)>>>12][((r16+14516)>>>2)&0x3ff]; + r2 = readPages[(r16 + -13828) >>> 12][((r16 + -13828) >>> 2) & 0x3ff]; r3 = ((r2 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ + if (r3 != r0) { + /* Next insn is delay slot */ r2 = r2 + 1; - pc=0x10138; + pc = 0x10138; continue; } r2 = r2 + 1; case 0x10164: - /* Next insn is delay slot */ - r31=0x1016c; - pc=0x10060; + /* Next insn is delay slot */ + r31 = 0x1016c; + pc = 0x10060; continue; case 0x1016c: r2 = 0 << 16; r2 = r2 + 0; - if(r2 == r0) { - /* Next insn is delay slot */ + if (r2 == r0) { + /* Next insn is delay slot */ r2 = r0 + 1; - pc=0x1018c; + pc = 0x1018c; continue; } r2 = r0 + 1; - r4 = 7 << 16; - /* Next insn is delay slot */ - r4 = r4 + 5436; - r31=0x10188; - pc=0x0; + r4 = 6 << 16; + /* Next insn is delay slot */ + r4 = r4 + -26384; + r31 = 0x10188; + pc = 0x0; throw new ExecutionException("Branch to addr 0x0"); case 0x10188: r2 = r0 + 1; case 0x1018c: - addr=r19+14512; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r19 + -13832; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; case 0x10190: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - /* Next insn is delay slot */ + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ r29 = r29 + 40; - pc=r31; + pc = r31; return; case 0x101ac: r2 = 0 << 16; r29 = r29 + -24; r2 = r2 + 0; - if(r2 == r0) { - /* Next insn is delay slot */ - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - pc=0x101d4; + if (r2 == r0) { + /* Next insn is delay slot */ + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + pc = 0x101d4; continue; } - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - r4 = 7 << 16; - r5 = 7 << 16; - r4 = r4 + 5436; - /* Next insn is delay slot */ - r5 = r5 + 14520; - r31=0x101d4; - pc=0x0; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + r4 = 6 << 16; + r5 = 6 << 16; + r4 = r4 + -26384; + /* Next insn is delay slot */ + r5 = r5 + -13824; + r31 = 0x101d4; + pc = 0x0; throw new ExecutionException("Branch to addr 0x0"); case 0x101d4: - r4 = 7 << 16; - r2 = readPages[(r4+5440)>>>12][((r4+5440)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ + r4 = 6 << 16; + r2 = readPages[(r4 + -26380) >>> 12][((r4 + -26380) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ r2 = 0 << 16; - pc=0x101fc; + pc = 0x101fc; continue; } r2 = 0 << 16; r2 = r2 + 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x101fc; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x101fc; continue; } - /* Next insn is delay slot */ - r4 = r4 + 5440; - pc=r2; - r31=0x101fc; + /* Next insn is delay slot */ + r4 = r4 + -26380; + pc = r2; + r31 = 0x101fc; return; case 0x101fc: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; case 0x10200: - pc=0x10200; + pc = 0x10200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_10200() throws ExecutionException { /* 0x10200 - 0x10400 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x10200: - /* Next insn is delay slot */ + /* Next insn is delay slot */ r29 = r29 + 24; - pc=0x1009c; - run_10000(); return; + pc = 0x1009c; + run_10000(); + return; case 0x10208: - r2 = 7 << 16; - r2 = readPages[(r2+-14848)>>>12][((r2+-14848)>>>2)&0x3ff]; + r2 = 5 << 16; + r2 = readPages[(r2 + 18432) >>> 12][((r2 + 18432) >>> 2) & 0x3ff]; r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x10260; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x10260; continue; } r29 = r29 + -32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r16 = 7 << 16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r16 = r16 + -14852; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r16 = 5 << 16; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r16 = r16 + 18428; r17 = r0 + -1; case 0x10238: - /* Next insn is delay slot */ + /* Next insn is delay slot */ r16 = r16 + -4; - pc=r2; - r31=0x10240; + pc = r2; + r31 = 0x10240; return; case 0x10240: - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - if(r2 != r17) { - /* Next insn is delay slot */ - pc=0x10238; + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + if (r2 != r17) { + /* Next insn is delay slot */ + pc = 0x10238; continue; } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 32; case 0x10260: - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; case 0x10268: r2 = r4 + 1; case 0x1026c: - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ + if (r3 != r0) { + /* Next insn is delay slot */ r4 = r4 + 1; - pc=0x1026c; + pc = 0x1026c; continue; } r4 = r4 + 1; - /* Next insn is delay slot */ + /* Next insn is delay slot */ r2 = r4 - r2; - pc=r31; + pc = r31; return; case 0x10284: r29 = r29 + -32; @@ -354,17 +361,17 @@ public final class AcmeCrossAssembler extends UnixRuntime { r5 = r6 + r0; r6 = r7 + r0; r7 = r16 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r18; - /* Next insn is delay slot */ - pc=r2; - r31=0x102ac; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r18; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x102ac; return; case 0x102ac: r3 = r2 + r0; r2 = r0 + 2; pc = 0x102b4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { pc = 0x102b8; return; @@ -373,35256 +380,34515 @@ public final class AcmeCrossAssembler extends UnixRuntime { r2 = r0 + 1; r3 = r0 + 1; pc = 0x102c0; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { pc = 0x102c4; return; } case 0x102c4: case 0x10400: - pc=0x10400; + pc = 0x10400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_10400() throws ExecutionException { /* 0x10400 - 0x10600 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x10400: r29 = r29 + -24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; r16 = r4 + r0; - if(r28 == r0) { - /* Next insn is delay slot */ - pc=0x1047c; + if (r28 == r0) { + /* Next insn is delay slot */ + pc = 0x1047c; continue; } case 0x10418: - writePages[(r28+-31080)>>>12][((r28+-31080)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - r31=0x10424; - pc=0x10000; - run_10000(); return; + writePages[(r28 + -31520) >>> 12][((r28 + -31520) >>> 2) & 0x3ff] = r5; + /* Next insn is delay slot */ + r31 = 0x10424; + pc = 0x10000; + run_10000(); + return; case 0x10424: r4 = 1 << 16; r4 = r4 + 56; - /* Next insn is delay slot */ - r31=0x10434; - pc=0x38a00; - run_38a00(); return; + /* Next insn is delay slot */ + r31 = 0x10434; + pc = 0x3fe00; + run_3fe00(); + return; case 0x10434: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1048c; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1048c; continue; } r2 = r16 + 4; r4 = r0 + r0; case 0x1044c: r2 = r2 + 4; - r6 = readPages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff]; + r6 = readPages[(r2 + -4) >>> 12][((r2 + -4) >>> 2) & 0x3ff]; r4 = r4 + 1; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x1044c; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x1044c; continue; } case 0x10460: - r6 = readPages[(r28+-31080)>>>12][((r28+-31080)>>>2)&0x3ff]; + r6 = readPages[(r28 + -31520) >>> 12][((r28 + -31520) >>> 2) & 0x3ff]; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x10470; - pc=0x11c00; - run_11c00(); return; + /* Next insn is delay slot */ + r31 = 0x10470; + pc = 0x12200; + run_12200(); + return; case 0x10470: r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x1047c; - pc=0x38e00; - run_38e00(); return; + /* Next insn is delay slot */ + r31 = 0x1047c; + pc = 0x40200; + run_40200(); + return; case 0x1047c: - r2 = 8 << 16; - r28 = r2 + -20464; - /* Next insn is delay slot */ - pc=0x10418; + r2 = 6 << 16; + r28 = r2 + 17424; + /* Next insn is delay slot */ + pc = 0x10418; continue; case 0x1048c: r4 = r0 + r0; - /* Next insn is delay slot */ - pc=0x10460; + /* Next insn is delay slot */ + pc = 0x10460; continue; case 0x10600: - pc=0x10600; + pc = 0x10600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_10600() throws ExecutionException { /* 0x10600 - 0x10800 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x10600: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r7 = r4 + r0; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r6 = 7 << 16; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = 5 << 16; r29 = r29 + -24; - r5 = r5 + -12288; - r6 = r6 + -7904; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x1062c; - pc=0x3bc00; - run_3bc00(); return; + r5 = r5 + 20480; + r6 = r6 + 28248; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x1062c; + pc = 0x42000; + run_42000(); + return; case 0x1062c: r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x10638; - pc=0x38e00; - run_38e00(); return; + /* Next insn is delay slot */ + r31 = 0x10638; + pc = 0x40200; + run_40200(); + return; case 0x10638: case 0x10800: - pc=0x10800; + pc = 0x10800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_10800() throws ExecutionException { /* 0x10800 - 0x10a00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x10800: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r6 = 7 << 16; - r29 = r29 + -24; - r5 = r5 + -12260; - r6 = r6 + -7904; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x10828; - pc=0x3bc00; - run_3bc00(); return; - case 0x10828: - r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x10834; - pc=0x38e00; - run_38e00(); return; - case 0x10834: - case 0x10a00: - pc=0x10a00; + r29 = r29 + -32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r16 = 6 << 16; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + r17 = r4 + r0; + r4 = r16 + -24536; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x10824; + pc = 0x1c400; + run_1c400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x10824: + r4 = r16 + -24536; + r5 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x10834; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x10834: + r4 = r16 + -24536; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x10844; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x10844: + r4 = r16 + -24536; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = r4 + r0; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x1d200; + run_1d200(); + return; + case 0x10a00: + pc = 0x10a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_10a00() throws ExecutionException { /* 0x10a00 - 0x10c00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x10a00: - r4 = 7 << 16; - r29 = r29 + -24; - r4 = r4 + -12200; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x10a18; - pc=0x40400; - run_40400(); return; - case 0x10a18: - r4 = 7 << 16; - r4 = r4 + -12104; - /* Next insn is delay slot */ - r31=0x10a28; - pc=0x40400; - run_40400(); return; - case 0x10a28: - r4 = 7 << 16; - r4 = r4 + -12016; - /* Next insn is delay slot */ - r31=0x10a38; - pc=0x40400; - run_40400(); return; - case 0x10a38: - r4 = r0 + r0; - /* Next insn is delay slot */ - r31=0x10a44; - pc=0x38e00; - run_38e00(); return; - case 0x10a44: - case 0x10c00: - pc=0x10c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_10c00() throws ExecutionException { /* 0x10c00 - 0x10e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x10c00: - r29 = r29 + -64; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r16; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r21; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r20; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r19; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r18; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r17; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + r29 = r29 + -32; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - r16 = r4 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x10d7c; - continue; - } - r21 = 7 << 16; - r20 = 7 << 16; - r18 = 7 << 16; - r21 = r21 + -9536; - r20 = r20 + -9308; - r19 = 7 << 16; - r18 = r18 + -9268; - r17 = 7 << 16; - case 0x10c50: - r3 = r2 + -68; - r3 = r3 & 255; - r5 = (r3&0xffffffffL) < (51&0xffffffffL) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x10d10; - continue; - } - r3 = r3 << 2; - r3 = r21 + r3; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r3; - return; - case 0x10c7c: - r16 = r18 + r0; - case 0x10c80: - addr=r16+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x10f34; - run_10e00(); return; - } r3 = r0 + 37; - r4 = r16 + 1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x10f4c; - run_10e00(); return; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x10a74; + continue; } r3 = r0 + 38; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x10f94; - run_10e00(); return; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x10a84; + continue; } r3 = r0 + 36; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x10fa4; - run_10e00(); return; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x10a94; + continue; } r3 = r0 + 48; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x10f5c; - run_10e00(); return; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x10aa4; + continue; } - case 0x10cc4: + case 0x10a3c: r6 = r0 + 10; - case 0x10cc8: + case 0x10a40: r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x10cd4; - pc=0x43600; - run_43600(); return; - case 0x10cd4: - r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r16 = r2 + r0; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x10fb4; - run_10e00(); return; - } - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x10d00; - pc=0x17c00; - run_17c00(); return; - case 0x10d00: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x10d0c; - pc=0x30200; - run_30200(); return; - case 0x10d0c: - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - case 0x10d10: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r21 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r20 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r19 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r18 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x10a4c; + pc = 0x48800; + run_48800(); return; - case 0x10d38: - r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff] = r2; - addr=r16+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r2 + -48; - r4 = r3 & 255; - r4 = (r4&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x10d70; + case 0x10a4c: + r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x10ad0; continue; } - writePages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff] = r3; - addr=r16+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r16 = r16 + 1; - case 0x10d70: - r16 = r16 + 1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x10c50; - continue; - } - case 0x10d7c: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x10d10; - continue; - case 0x10d88: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = r0 + 61; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - addr=r16+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r18 = r16 + 1; - if(r5 == r3) { - /* Next insn is delay slot */ - pc=0x10c7c; - continue; - } - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x10f34; - run_10e00(); return; - } - r4 = r2 + r0; - r16 = r18 + r0; - r17 = r0 + 61; - /* Next insn is delay slot */ - pc=0x10dcc; - continue; - case 0x10dc0: - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x10f34; - run_10e00(); return; - } - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - case 0x10dcc: - r16 = r16 + 1; - /* Next insn is delay slot */ - r31=0x10dd8; - pc=0x17c00; - run_17c00(); return; - case 0x10dd8: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - if(r5 != r17) { - /* Next insn is delay slot */ - pc=0x10dc0; - continue; - } - /* Next insn is delay slot */ - pc=0x10c80; - continue; - case 0x10df0: - r4 = 7 << 16; - r4 = r4 + -12104; - /* Next insn is delay slot */ - r31=0x10e00; - pc=0x40400; - run_40400(); return; - case 0x10e00: - pc=0x10e00; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_10e00() throws ExecutionException { /* 0x10e00 - 0x11000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x10e00: - r4 = r0 + r0; - /* Next insn is delay slot */ - r31=0x10e0c; - pc=0x38e00; - run_38e00(); return; - case 0x10e0c: - /* Next insn is delay slot */ - r31=0x10e14; - pc=0x10a00; - run_10a00(); return; - case 0x10e14: - r4 = r19 + -9292; - /* Next insn is delay slot */ - r31=0x10e20; - pc=0x16a00; - run_16a00(); return; - case 0x10e20: - writePages[(r28+-30840)>>>12][((r28+-30840)>>>2)&0x3ff] = r2; - addr=r16+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x10d70; - run_10c00(); return; - case 0x10e30: - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x10e3c; - pc=0x16a00; - run_16a00(); return; - case 0x10e3c: - writePages[(r28+-30848)>>>12][((r28+-30848)>>>2)&0x3ff] = r2; - addr=r16+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x10d70; - run_10c00(); return; - case 0x10e4c: - r4 = r20 + r0; - /* Next insn is delay slot */ - r31=0x10e58; - pc=0x16a00; - run_16a00(); return; - case 0x10e58: - writePages[(r28+-30852)>>>12][((r28+-30852)>>>2)&0x3ff] = r2; - addr=r16+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x10d70; - run_10c00(); return; - case 0x10e68: - r16 = r16 + 1; - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10396; - /* Next insn is delay slot */ - r31=0x10e80; - pc=0x42c00; - run_42c00(); return; - case 0x10e80: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x10f40; - continue; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10380; - /* Next insn is delay slot */ - r31=0x10e9c; - pc=0x42c00; - run_42c00(); return; - case 0x10e9c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x10f88; - continue; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10368; - /* Next insn is delay slot */ - r31=0x10eb8; - pc=0x42c00; - run_42c00(); return; - case 0x10eb8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x10fc4; - continue; - } - r2 = r0 + 1; - writePages[(r28+-30740)>>>12][((r28+-30740)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x10d10; - run_10c00(); return; - case 0x10ed4: - r4 = r17 + -10412; - /* Next insn is delay slot */ - r31=0x10ee0; - pc=0x16a00; - run_16a00(); return; - case 0x10ee0: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r2 + r0; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x10ef4; - pc=0x17e00; - run_17e00(); return; - case 0x10ef4: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x10f04; - pc=0x17c00; - run_17c00(); return; - case 0x10f04: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r4 + r0; - /* Next insn is delay slot */ - r31=0x10f18; - pc=0x18000; - run_18000(); return; - case 0x10f18: - /* Next insn is delay slot */ - r31=0x10f20; - pc=0x26800; - run_26800(); return; - case 0x10f20: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x10fbc; - continue; - } - addr=r16+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x10d70; - run_10c00(); return; - case 0x10f34: - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x10f40; - pc=0x10600; - run_10600(); return; - case 0x10f40: - writePages[(r28+-32332)>>>12][((r28+-32332)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x10d10; - run_10c00(); return; - case 0x10f4c: - r4 = r16 + 2; + case 0x10a74: + r4 = r4 + 1; r6 = r0 + 2; - /* Next insn is delay slot */ - pc=0x10cc8; - run_10c00(); return; - case 0x10f5c: - addr=r16+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + /* Next insn is delay slot */ + pc = 0x10a40; + continue; + case 0x10a84: + r4 = r4 + 1; + r6 = r0 + 8; + /* Next insn is delay slot */ + pc = 0x10a40; + continue; + case 0x10a94: + r4 = r4 + 1; + r6 = r0 + 16; + /* Next insn is delay slot */ + pc = 0x10a40; + continue; + case 0x10aa4: + addr = r4 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r3 = tmp; r2 = r0 + 88; r3 = r3 & 223; r3 = r3 << 24; r3 = r3 >> 24; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x10cc4; - run_10c00(); return; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x10a3c; + continue; } - r4 = r16 + 3; + r4 = r4 + 2; r6 = r0 + 16; - /* Next insn is delay slot */ - pc=0x10cc8; - run_10c00(); return; - case 0x10f88: - writePages[(r28+-32336)>>>12][((r28+-32336)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x10d10; - run_10c00(); return; - case 0x10f94: - r4 = r16 + 2; - r6 = r0 + 8; - /* Next insn is delay slot */ - pc=0x10cc8; - run_10c00(); return; - case 0x10fa4: - r4 = r16 + 2; - r6 = r0 + 16; - /* Next insn is delay slot */ - pc=0x10cc8; - run_10c00(); return; - case 0x10fb4: - /* Next insn is delay slot */ - r31=0x10fbc; - pc=0x10600; - run_10600(); return; - case 0x10fbc: - /* Next insn is delay slot */ - r31=0x10fc4; - pc=0x10800; - run_10800(); return; - case 0x10fc4: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r6 = 7 << 16; - r5 = r5 + -10352; - r6 = r6 + -7904; - /* Next insn is delay slot */ - r31=0x10fe4; - pc=0x3bc00; - run_3bc00(); return; - case 0x10fe4: - r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x10ff0; - pc=0x38e00; - run_38e00(); return; - case 0x10ff0: - case 0x11000: - pc=0x11000; + /* Next insn is delay slot */ + pc = 0x10a40; + continue; + case 0x10ad0: + /* Next insn is delay slot */ + r31 = 0x10ad8; + pc = 0x10600; + run_10600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x10ad8: + case 0x10c00: + pc = 0x10c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + + private final void run_10c00() throws ExecutionException { /* 0x10c00 - 0x10e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x10c00: + r29 = r29 + -24; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x10c38; + continue; + } + /* Next insn is delay slot */ + r31 = 0x10c18; + pc = 0x10800; + run_10800(); + return; + case 0x10c18: + /* Next insn is delay slot */ + r31 = 0x10c20; + pc = 0x2b600; + run_2b600(); + return; + case 0x10c20: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x10c84; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x10c38: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4 = 5 << 16; + r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r4 = r4 + 20540; + r5 = r0 + 1; + r6 = r0 + 35; + /* Next insn is delay slot */ + r31 = 0x10c58; + pc = 0x43e00; + run_43e00(); + return; + case 0x10c58: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = 6 << 16; + r5 = r5 + 20576; + r6 = r6 + -30816; + /* Next insn is delay slot */ + r31 = 0x10c78; + pc = 0x42000; + run_42000(); + return; + case 0x10c78: + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x10c84; + pc = 0x40200; + run_40200(); + return; + case 0x10c84: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4 = 5 << 16; + r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r4 = r4 + 20508; + r5 = r0 + 1; + r6 = r0 + 30; + /* Next insn is delay slot */ + r31 = 0x10ca4; + pc = 0x43e00; + run_43e00(); + return; + case 0x10ca4: + /* Next insn is delay slot */ + pc = 0x10c58; + continue; + case 0x10e00: + pc = 0x10e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_10e00() throws ExecutionException { /* 0x10e00 - 0x11000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x10e00: + r29 = r29 + -24; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + /* Next insn is delay slot */ + r31 = 0x10e18; + pc = 0x10a00; + run_10a00(); + return; + case 0x10e18: + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x10e34; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x10e34: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = 5 << 16; + r5 = r5 + 20608; + r6 = r6 + 28248; + r7 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x10e58; + pc = 0x42000; + run_42000(); + return; + case 0x10e58: + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x10e64; + pc = 0x40200; + run_40200(); + return; + case 0x10e64: + case 0x11000: + pc = 0x11000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + private final void run_11000() throws ExecutionException { /* 0x11000 - 0x11200 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x11000: - r5 = 7 << 16; - r29 = r29 + -32; - r5 = r5 + -10324; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r16 = r4 + r0; - /* Next insn is delay slot */ - r31=0x11020; - pc=0x42c00; - run_42c00(); return; - case 0x11020: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x11730; - run_11600(); return; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10316; - /* Next insn is delay slot */ - r31=0x1103c; - pc=0x42c00; - run_42c00(); return; - case 0x1103c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x11218; - run_11200(); return; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10308; - /* Next insn is delay slot */ - r31=0x11058; - pc=0x42c00; - run_42c00(); return; - case 0x11058: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1128c; - run_11200(); return; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10300; - /* Next insn is delay slot */ - r31=0x11074; - pc=0x42c00; - run_42c00(); return; - case 0x11074: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x111dc; - continue; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10288; - /* Next insn is delay slot */ - r31=0x11090; - pc=0x42c00; - run_42c00(); return; - case 0x11090: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x111dc; - continue; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10276; - /* Next insn is delay slot */ - r31=0x110ac; - pc=0x42c00; - run_42c00(); return; - case 0x110ac: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x112ac; - run_11200(); return; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10264; - /* Next insn is delay slot */ - r31=0x110c8; - pc=0x42c00; - run_42c00(); return; - case 0x110c8: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x112cc; - run_11200(); return; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10256; - /* Next insn is delay slot */ - r31=0x110e4; - pc=0x42c00; - run_42c00(); return; - case 0x110e4: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x112ec; - run_11200(); return; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10188; - /* Next insn is delay slot */ - r31=0x11100; - pc=0x42c00; - run_42c00(); return; - case 0x11100: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x113c8; - run_11200(); return; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10108; - /* Next insn is delay slot */ - r31=0x1111c; - pc=0x42c00; - run_42c00(); return; - case 0x1111c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x11430; - run_11400(); return; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10044; - /* Next insn is delay slot */ - r31=0x11138; - pc=0x42c00; - run_42c00(); return; - case 0x11138: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x114f8; - run_11400(); return; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -10012; - /* Next insn is delay slot */ - r31=0x11154; - pc=0x42c00; - run_42c00(); return; - case 0x11154: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x115a4; - run_11400(); return; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -9984; - /* Next insn is delay slot */ - r31=0x11170; - pc=0x42c00; - run_42c00(); return; - case 0x11170: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x111fc; - continue; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -9972; - /* Next insn is delay slot */ - r31=0x1118c; - pc=0x42c00; - run_42c00(); return; - case 0x1118c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x111c8; - continue; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -9964; - /* Next insn is delay slot */ - r31=0x111a8; - pc=0x42c00; - run_42c00(); return; - case 0x111a8: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x11654; - run_11600(); return; - } - case 0x111b0: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r16 + r0; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + r4 = 5 << 16; + r29 = r29 + -24; + r4 = r4 + 20652; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x11018; + pc = 0x46000; + run_46000(); return; - case 0x111c8: - r2 = r0 + 1; - writePages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff] = r2; - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x111b0; - continue; - case 0x111dc: - r4 = 7 << 16; - r4 = r4 + -9292; - /* Next insn is delay slot */ - r31=0x111ec; - pc=0x16a00; - run_16a00(); return; - case 0x111ec: - writePages[(r28+-30840)>>>12][((r28+-30840)>>>2)&0x3ff] = r2; - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x111b0; - continue; - case 0x111fc: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + case 0x11018: + r4 = 5 << 16; + r4 = r4 + 20748; + /* Next insn is delay slot */ + r31 = 0x11028; + pc = 0x46000; + run_46000(); + return; + case 0x11028: + r4 = 5 << 16; + r4 = r4 + 20828; + /* Next insn is delay slot */ + r31 = 0x11038; + pc = 0x46000; + run_46000(); + return; + case 0x11038: + r4 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x11044; + pc = 0x40200; + run_40200(); + return; + case 0x11044: case 0x11200: - pc=0x11200; + pc = 0x11200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_11200() throws ExecutionException { /* 0x11200 - 0x11400 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x11200: - r16 = r0 + r0; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x111b0; - run_11000(); return; - case 0x11218: - r4 = 7 << 16; - r4 = r4 + -10412; - /* Next insn is delay slot */ - r31=0x11228; - pc=0x16a00; - run_16a00(); return; + r5 = 5 << 16; + r29 = r29 + -32; + r5 = r5 + 23168; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + r16 = r4 + r0; + /* Next insn is delay slot */ + r31 = 0x11228; + pc = 0x47e00; + run_47e00(); + return; case 0x11228: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r2 + r0; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x1123c; - pc=0x17e00; - run_17e00(); return; - case 0x1123c: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x1124c; - pc=0x17c00; - run_17c00(); return; - case 0x1124c: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r4 + r0; - /* Next insn is delay slot */ - r31=0x11260; - pc=0x18000; - run_18000(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11890; + run_11800(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23176; + /* Next insn is delay slot */ + r31 = 0x11244; + pc = 0x47e00; + run_47e00(); + return; + case 0x11244: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11540; + run_11400(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23184; + /* Next insn is delay slot */ + r31 = 0x11260; + pc = 0x47e00; + run_47e00(); + return; case 0x11260: - /* Next insn is delay slot */ - r31=0x11268; - pc=0x26800; - run_26800(); return; - case 0x11268: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x11738; - run_11600(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11574; + run_11400(); + return; } - case 0x11270: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = r0 + r0; - r2 = r16 + r0; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23192; + /* Next insn is delay slot */ + r31 = 0x1127c; + pc = 0x47e00; + run_47e00(); + return; + case 0x1127c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x114ec; + run_11400(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23204; + /* Next insn is delay slot */ + r31 = 0x11298; + pc = 0x47e00; + run_47e00(); + return; + case 0x11298: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x114ec; + run_11400(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23216; + /* Next insn is delay slot */ + r31 = 0x112b4; + pc = 0x47e00; + run_47e00(); + return; + case 0x112b4: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x115ac; + run_11400(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23228; + /* Next insn is delay slot */ + r31 = 0x112d0; + pc = 0x47e00; + run_47e00(); + return; + case 0x112d0: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x115cc; + run_11400(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23236; + /* Next insn is delay slot */ + r31 = 0x112ec; + pc = 0x47e00; + run_47e00(); return; - case 0x1128c: - r4 = 7 << 16; - r4 = r4 + -9268; - /* Next insn is delay slot */ - r31=0x1129c; - pc=0x16a00; - run_16a00(); return; - case 0x1129c: - writePages[(r28+-30848)>>>12][((r28+-30848)>>>2)&0x3ff] = r2; - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x111b0; - run_11000(); return; - case 0x112ac: - r4 = 7 << 16; - r4 = r4 + -9332; - /* Next insn is delay slot */ - r31=0x112bc; - pc=0x16a00; - run_16a00(); return; - case 0x112bc: - writePages[(r28+-30844)>>>12][((r28+-30844)>>>2)&0x3ff] = r2; - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x111b0; - run_11000(); return; - case 0x112cc: - r4 = 7 << 16; - r4 = r4 + -9308; - /* Next insn is delay slot */ - r31=0x112dc; - pc=0x16a00; - run_16a00(); return; - case 0x112dc: - writePages[(r28+-30852)>>>12][((r28+-30852)>>>2)&0x3ff] = r2; - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x111b0; - run_11000(); return; case 0x112ec: - r4 = 7 << 16; - r4 = r4 + -10248; - /* Next insn is delay slot */ - r31=0x112fc; - pc=0x16a00; - run_16a00(); return; - case 0x112fc: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r4 = r0 + 37; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x11670; - run_11600(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11604; + run_11600(); + return; } - r4 = r0 + 38; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x116b0; - run_11600(); return; - } - r4 = r0 + 36; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x116f0; - run_11600(); return; - } - r4 = r0 + 48; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x1139c; - continue; - } - case 0x11330: - r6 = r0 + 10; - case 0x11334: - r4 = r2 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x11344; - pc=0x43600; - run_43600(); return; - case 0x11344: - r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x11740; - run_11600(); return; - } - r3 = 1 << 16; - writePages[(r28+-32752)>>>12][((r28+-32752)>>>2)&0x3ff] = r2; - r2 = ((r2 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x11270; - continue; - } - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r5 = r5 + -10232; - case 0x11380: - r6 = 7 << 16; - r6 = r6 + -7904; - /* Next insn is delay slot */ - r31=0x11390; - pc=0x3bc00; - run_3bc00(); return; - case 0x11390: - r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x1139c; - pc=0x38e00; - run_38e00(); return; - case 0x1139c: - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r3 = r0 + 88; - r4 = r4 & 223; - r4 = r4 << 24; - r4 = r4 >> 24; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x11330; - continue; - } - r2 = r2 + 2; - r6 = r0 + 16; - /* Next insn is delay slot */ - pc=0x11334; - continue; - case 0x113c8: - r4 = 7 << 16; - r4 = r4 + -10184; - /* Next insn is delay slot */ - r31=0x113d8; - pc=0x16a00; - run_16a00(); return; - case 0x113d8: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r2 + r0; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x113ec; - pc=0x17e00; - run_17e00(); return; - case 0x113ec: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x113fc; - pc=0x17c00; - run_17c00(); return; - case 0x113fc: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - case 0x11400: - pc=0x11400; + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23260; + /* Next insn is delay slot */ + r31 = 0x11308; + pc = 0x47e00; + run_47e00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x11308: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11634; + run_11600(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23324; + /* Next insn is delay slot */ + r31 = 0x11324; + pc = 0x47e00; + run_47e00(); + return; + case 0x11324: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11688; + run_11600(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23416; + /* Next insn is delay slot */ + r31 = 0x11340; + pc = 0x47e00; + run_47e00(); + return; + case 0x11340: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x116c4; + run_11600(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23480; + /* Next insn is delay slot */ + r31 = 0x1135c; + pc = 0x47e00; + run_47e00(); + return; + case 0x1135c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11754; + run_11600(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23512; + /* Next insn is delay slot */ + r31 = 0x11378; + pc = 0x47e00; + run_47e00(); + return; + case 0x11378: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11784; + run_11600(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23540; + /* Next insn is delay slot */ + r31 = 0x11394; + pc = 0x47e00; + run_47e00(); + return; + case 0x11394: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1150c; + run_11400(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23552; + /* Next insn is delay slot */ + r31 = 0x113b0; + pc = 0x47e00; + run_47e00(); + return; + case 0x113b0: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x114d4; + run_11400(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23560; + /* Next insn is delay slot */ + r31 = 0x113cc; + pc = 0x47e00; + run_47e00(); + return; + case 0x113cc: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11528; + run_11400(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23572; + /* Next insn is delay slot */ + r31 = 0x113e8; + pc = 0x47e00; + run_47e00(); + return; + case 0x113e8: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11560; + run_11400(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23588; + /* Next insn is delay slot */ + r31 = 0x11404; + pc = 0x47e00; + run_47e00(); + return; + case 0x11400: + pc = 0x11400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_11400() throws ExecutionException { /* 0x11400 - 0x11600 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x11400: - r5 = r4 + r0; - /* Next insn is delay slot */ - r31=0x11410; - pc=0x18000; - run_18000(); return; - case 0x11410: - /* Next insn is delay slot */ - r31=0x11418; - pc=0x17000; - run_17000(); return; - case 0x11418: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x11748; - run_11600(); return; - } - writePages[(r28+-30836)>>>12][((r28+-30836)>>>2)&0x3ff] = r2; - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x111b0; - run_11000(); return; - case 0x11430: - r4 = 7 << 16; - r4 = r4 + -10100; - /* Next insn is delay slot */ - r31=0x11440; - pc=0x16a00; - run_16a00(); return; - case 0x11440: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r4 = r0 + 37; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x11680; - run_11600(); return; - } - r4 = r0 + 38; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x116c0; - run_11600(); return; - } - r4 = r0 + 36; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x11700; - run_11600(); return; - } - r4 = r0 + 48; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x114cc; + case 0x11404: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11594; continue; } - case 0x11474: - r6 = r0 + 10; - case 0x11478: - r4 = r2 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x11488; - pc=0x43600; - run_43600(); return; - case 0x11488: - r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x11740; - run_11600(); return; - } - writePages[(r28+-32756)>>>12][((r28+-32756)>>>2)&0x3ff] = r2; - r2 = r2 + 128; - r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x11270; - run_11200(); return; - } - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r5 = r5 + -10084; - /* Next insn is delay slot */ - pc=0x11380; - run_11200(); return; - case 0x114cc: - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r3 = r0 + 88; - r4 = r4 & 223; - r4 = r4 << 24; - r4 = r4 >> 24; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x11474; - continue; - } - r2 = r2 + 2; - r6 = r0 + 16; - /* Next insn is delay slot */ - pc=0x11478; - continue; - case 0x114f8: - r4 = 7 << 16; - r4 = r4 + -10032; - /* Next insn is delay slot */ - r31=0x11508; - pc=0x16a00; - run_16a00(); return; - case 0x11508: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r4 = r0 + 37; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x11690; - run_11600(); return; - } - r4 = r0 + 38; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x116d0; - run_11600(); return; - } - r4 = r0 + 36; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x11710; - run_11600(); return; - } - r4 = r0 + 48; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x11578; - continue; - } - case 0x1153c: - r6 = r0 + 10; - case 0x11540: - r4 = r2 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x11550; - pc=0x43600; - run_43600(); return; - case 0x11550: - r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x11740; - run_11600(); return; - } - writePages[(r28+-32340)>>>12][((r28+-32340)>>>2)&0x3ff] = r2; - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x111b0; - run_11000(); return; - case 0x11578: - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r3 = r0 + 88; - r4 = r4 & 223; - r4 = r4 << 24; - r4 = r4 >> 24; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x1153c; - continue; - } - r2 = r2 + 2; - r6 = r0 + 16; - /* Next insn is delay slot */ - pc=0x11540; - continue; - case 0x115a4: - r4 = 7 << 16; - r4 = r4 + -10000; - /* Next insn is delay slot */ - r31=0x115b4; - pc=0x16a00; - run_16a00(); return; - case 0x115b4: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r4 = r0 + 37; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x116a0; - run_11600(); return; - } - r4 = r0 + 38; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x116e0; - run_11600(); return; - } - r4 = r0 + 36; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x11720; - run_11600(); return; - } - r4 = r0 + 48; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x11628; - run_11600(); return; - } - case 0x115e8: - r6 = r0 + 10; - case 0x115ec: - r4 = r2 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x115fc; - pc=0x43600; - run_43600(); return; - case 0x115fc: - r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - case 0x11600: - pc=0x11600; + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23604; + /* Next insn is delay slot */ + r31 = 0x11420; + pc = 0x47e00; + run_47e00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x11420: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x115ec; + continue; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23612; + /* Next insn is delay slot */ + r31 = 0x1143c; + pc = 0x47e00; + run_47e00(); + return; + case 0x1143c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x117cc; + run_11600(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23772; + /* Next insn is delay slot */ + r31 = 0x11458; + pc = 0x47e00; + run_47e00(); + return; + case 0x11458: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11844; + run_11800(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23796; + /* Next insn is delay slot */ + r31 = 0x11474; + pc = 0x47e00; + run_47e00(); + return; + case 0x11474: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11728; + run_11600(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23804; + /* Next insn is delay slot */ + r31 = 0x11490; + pc = 0x47e00; + run_47e00(); + return; + case 0x11490: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x117b4; + run_11600(); + return; + } + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 23812; + /* Next insn is delay slot */ + r31 = 0x114ac; + pc = 0x47e00; + run_47e00(); + return; + case 0x114ac: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11874; + run_11800(); + return; + } + case 0x114b4: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r16 + r0; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x114d4: + r3 = r0 + 1; + r2 = 6 << 16; + writePages[(r2 + -10284) >>> 12][((r2 + -10284) >>> 2) & 0x3ff] = r3; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + continue; + case 0x114ec: + r4 = 5 << 16; + r4 = r4 + 25180; + /* Next insn is delay slot */ + r31 = 0x114fc; + pc = 0x1b400; + run_1b400(); + return; + case 0x114fc: + writePages[(r28 + -31396) >>> 12][((r28 + -31396) >>> 2) & 0x3ff] = r2; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + continue; + case 0x1150c: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r16 = r0 + r0; + r3 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r2 = 6 << 16; + writePages[(r2 + -10276) >>> 12][((r2 + -10276) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x114b4; + continue; + case 0x11528: + r3 = r0 + 46; + r2 = 6 << 16; + addr = r2 + -10308; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + continue; + case 0x11540: + /* Next insn is delay slot */ + r31 = 0x11548; + pc = 0x1b000; + run_1b000(); + return; + case 0x11548: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x11554; + pc = 0x10c00; + run_10c00(); + return; + case 0x11554: + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + continue; + case 0x11560: + r2 = 6 << 16; + writePages[(r2 + -10272) >>> 12][((r2 + -10272) >>> 2) & 0x3ff] = r0; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + continue; + case 0x11574: + r4 = 5 << 16; + r4 = r4 + 25204; + /* Next insn is delay slot */ + r31 = 0x11584; + pc = 0x1b400; + run_1b400(); + return; + case 0x11584: + writePages[(r28 + -31404) >>> 12][((r28 + -31404) >>> 2) & 0x3ff] = r2; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + continue; + case 0x11594: + r3 = r0 + -2; + r2 = 6 << 16; + writePages[(r2 + -10268) >>> 12][((r2 + -10268) >>> 2) & 0x3ff] = r3; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + continue; + case 0x115ac: + r4 = 5 << 16; + r4 = r4 + 25140; + /* Next insn is delay slot */ + r31 = 0x115bc; + pc = 0x1b400; + run_1b400(); + return; + case 0x115bc: + writePages[(r28 + -31400) >>> 12][((r28 + -31400) >>> 2) & 0x3ff] = r2; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + continue; + case 0x115cc: + r4 = 5 << 16; + r4 = r4 + 25164; + /* Next insn is delay slot */ + r31 = 0x115dc; + pc = 0x1b400; + run_1b400(); + return; + case 0x115dc: + writePages[(r28 + -31408) >>> 12][((r28 + -31408) >>> 2) & 0x3ff] = r2; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + continue; + case 0x115ec: + r3 = r0 + 1; + r2 = 6 << 16; + writePages[(r2 + -10264) >>> 12][((r2 + -10264) >>> 2) & 0x3ff] = r3; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + continue; + case 0x11600: + pc = 0x11600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_11600() throws ExecutionException { /* 0x11600 - 0x11800 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x11600: - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x11740; - continue; - } - writePages[(r28+-32764)>>>12][((r28+-32764)>>>2)&0x3ff] = r2; - writePages[(r28+-32760)>>>12][((r28+-32760)>>>2)&0x3ff] = r2; - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x111b0; - run_11000(); return; - case 0x11628: - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r3 = r0 + 88; - r4 = r4 & 223; - r4 = r4 << 24; - r4 = r4 >> 24; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x115e8; - run_11400(); return; - } - r2 = r2 + 2; - r6 = r0 + 16; - /* Next insn is delay slot */ - pc=0x115ec; - run_11400(); return; - case 0x11654: - r4 = 7 << 16; - r4 = r4 + -12104; - /* Next insn is delay slot */ - r31=0x11664; - pc=0x40400; - run_40400(); return; - case 0x11664: - r4 = r0 + r0; - /* Next insn is delay slot */ - r31=0x11670; - pc=0x38e00; - run_38e00(); return; - case 0x11670: - r2 = r2 + 1; - r6 = r0 + 2; - /* Next insn is delay slot */ - pc=0x11334; - run_11200(); return; - case 0x11680: - r2 = r2 + 1; - r6 = r0 + 2; - /* Next insn is delay slot */ - pc=0x11478; - run_11400(); return; - case 0x11690: - r2 = r2 + 1; - r6 = r0 + 2; - /* Next insn is delay slot */ - pc=0x11540; - run_11400(); return; - case 0x116a0: - r2 = r2 + 1; - r6 = r0 + 2; - /* Next insn is delay slot */ - pc=0x115ec; - run_11400(); return; - case 0x116b0: - r2 = r2 + 1; - r6 = r0 + 8; - /* Next insn is delay slot */ - pc=0x11334; - run_11200(); return; - case 0x116c0: - r2 = r2 + 1; - r6 = r0 + 8; - /* Next insn is delay slot */ - pc=0x11478; - run_11400(); return; - case 0x116d0: - r2 = r2 + 1; - r6 = r0 + 8; - /* Next insn is delay slot */ - pc=0x11540; - run_11400(); return; - case 0x116e0: - r2 = r2 + 1; - r6 = r0 + 8; - /* Next insn is delay slot */ - pc=0x115ec; - run_11400(); return; - case 0x116f0: - r2 = r2 + 1; - r6 = r0 + 16; - /* Next insn is delay slot */ - pc=0x11334; - run_11200(); return; - case 0x11700: - r2 = r2 + 1; - r6 = r0 + 16; - /* Next insn is delay slot */ - pc=0x11478; - run_11400(); return; - case 0x11710: - r2 = r2 + 1; - r6 = r0 + 16; - /* Next insn is delay slot */ - pc=0x11540; - run_11400(); return; - case 0x11720: - r2 = r2 + 1; - r6 = r0 + 16; - /* Next insn is delay slot */ - pc=0x115ec; - run_11400(); return; - case 0x11730: - /* Next insn is delay slot */ - r31=0x11738; - pc=0x10a00; - run_10a00(); return; - case 0x11738: - /* Next insn is delay slot */ - r31=0x11740; - pc=0x10800; - run_10800(); return; - case 0x11740: - /* Next insn is delay slot */ - r31=0x11748; - pc=0x10600; - run_10600(); return; - case 0x11748: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r5 = r5 + -10172; - /* Next insn is delay slot */ - pc=0x11380; - run_11200(); return; - case 0x11800: - pc=0x11800; + case 0x11604: + r4 = 5 << 16; + r4 = r4 + 23244; + /* Next insn is delay slot */ + r31 = 0x11614; + pc = 0x1b400; + run_1b400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x11614: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x11620; + pc = 0x10e00; + run_10e00(); + return; + case 0x11620: + r3 = 6 << 16; + writePages[(r3 + -10240) >>> 12][((r3 + -10240) >>> 2) & 0x3ff] = r2; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + run_11400(); + return; + case 0x11634: + r4 = 5 << 16; + r4 = r4 + 23268; + /* Next insn is delay slot */ + r31 = 0x11644; + pc = 0x1b400; + run_1b400(); + return; + case 0x11644: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x11650; + pc = 0x10e00; + run_10e00(); + return; + case 0x11650: + r16 = 6 << 16; + r4 = 5 << 16; + r16 = r16 + -10308; + r4 = r4 + 23300; + writePages[(r16 + 72) >>> 12][((r16 + 72) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x1166c; + pc = 0x1b400; + run_1b400(); + return; + case 0x1166c: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x11678; + pc = 0x10e00; + run_10e00(); + return; + case 0x11678: + writePages[(r16 + 76) >>> 12][((r16 + 76) >>> 2) & 0x3ff] = r2; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + run_11400(); + return; + case 0x11688: + /* Next insn is delay slot */ + r31 = 0x11690; + pc = 0x1b000; + run_1b000(); + return; + case 0x11690: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x119b8; + run_11800(); + return; + } + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x116a4; + pc = 0x10800; + run_10800(); + return; + case 0x116a4: + /* Next insn is delay slot */ + r31 = 0x116ac; + pc = 0x1ba00; + run_1ba00(); + return; + case 0x116ac: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1196c; + run_11800(); + return; + } + writePages[(r28 + -31392) >>> 12][((r28 + -31392) >>> 2) & 0x3ff] = r2; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + run_11400(); + return; + case 0x116c4: + r4 = 5 << 16; + r4 = r4 + 23424; + /* Next insn is delay slot */ + r31 = 0x116d4; + pc = 0x1b400; + run_1b400(); + return; + case 0x116d4: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x116e0; + pc = 0x10a00; + run_10a00(); + return; + case 0x116e0: + r3 = 6 << 16; + writePages[(r3 + -10244) >>> 12][((r3 + -10244) >>> 2) & 0x3ff] = r2; + r2 = r2 + 128; + r2 = (r2 & 0xffffffffL) < (384 & 0xffffffffL) ? 1 : 0; + r16 = r0 + r0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x114b4; + run_11400(); + return; + } + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = 5 << 16; + r5 = r5 + 23440; + r6 = r6 + 28248; + /* Next insn is delay slot */ + r31 = 0x1171c; + pc = 0x42000; + run_42000(); + return; + case 0x1171c: + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x11728; + pc = 0x40200; + run_40200(); + return; + case 0x11728: + r2 = 6 << 16; + r2 = r2 + -10308; + r3 = r0 + 8; + writePages[(r2 + 52) >>> 12][((r2 + 52) >>> 2) & 0x3ff] = r3; + r3 = r0 + 1; + writePages[(r2 + 48) >>> 12][((r2 + 48) >>> 2) & 0x3ff] = r3; + r3 = 256 << 16; + writePages[(r2 + 60) >>> 12][((r2 + 60) >>> 2) & 0x3ff] = r3; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + run_11400(); + return; + case 0x11754: + r4 = 5 << 16; + r4 = r4 + 23492; + /* Next insn is delay slot */ + r31 = 0x11764; + pc = 0x1b400; + run_1b400(); + return; + case 0x11764: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x11770; + pc = 0x10a00; + run_10a00(); + return; + case 0x11770: + r3 = 6 << 16; + writePages[(r3 + -10288) >>> 12][((r3 + -10288) >>> 2) & 0x3ff] = r2; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + run_11400(); + return; + case 0x11784: + r4 = 5 << 16; + r4 = r4 + 23524; + /* Next insn is delay slot */ + r31 = 0x11794; + pc = 0x1b400; + run_1b400(); + return; + case 0x11794: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x117a0; + pc = 0x10a00; + run_10a00(); + return; + case 0x117a0: + writePages[(r28 + -32768) >>> 12][((r28 + -32768) >>> 2) & 0x3ff] = r2; + writePages[(r28 + -32764) >>> 12][((r28 + -32764) >>> 2) & 0x3ff] = r2; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + run_11400(); + return; + case 0x117b4: + r3 = r0 + 1; + r2 = 6 << 16; + writePages[(r2 + -10280) >>> 12][((r2 + -10280) >>> 2) & 0x3ff] = r3; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + run_11400(); + return; + case 0x117cc: + /* Next insn is delay slot */ + r31 = 0x117d4; + pc = 0x1b000; + run_1b000(); + return; + case 0x117d4: + r17 = r2 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1193c; + run_11800(); + return; + } + r18 = 6 << 16; + r18 = r18 + -26376; + r5 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x11898; + run_11800(); + return; + } + r16 = r18 + r0; + /* Next insn is delay slot */ + pc = 0x11818; + run_11800(); + return; + case 0x11800: + pc = 0x11800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_11800() throws ExecutionException { /* 0x11800 - 0x11a00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x11800: - r29 = r29 + -32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r16 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r17 = r4 + r0; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x1183c; + case 0x11804: + r16 = r16 + 12; + r5 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x11898; continue; } - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1183c; - continue; - } - /* Next insn is delay slot */ - r31=0x11838; - pc=0x39200; - run_39200(); return; - case 0x11838: - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r0; - case 0x1183c: - r4 = readPages[(r28+-30840)>>>12][((r28+-30840)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1187c; - continue; - } - r5 = r28 + -32744; - /* Next insn is delay slot */ - r31=0x11858; - pc=0x3b800; - run_3b800(); return; - case 0x11858: - r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x11914; + case 0x11818: + r4 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x11824; + pc = 0x47e00; + run_47e00(); + return; + case 0x11824: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x11804; continue; } + r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2 = 6 << 16; + writePages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff] = r3; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + run_11400(); + return; + case 0x11844: + r4 = 5 << 16; + r4 = r4 + 23784; + /* Next insn is delay slot */ + r31 = 0x11854; + pc = 0x1b400; + run_1b400(); + return; + case 0x11854: r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x11870; - pc=0x30400; - run_30400(); return; - case 0x11870: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x1187c; - pc=0x39200; - run_39200(); return; - case 0x1187c: - r4 = readPages[(r28+-30844)>>>12][((r28+-30844)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x118bc; - continue; - } - r5 = r28 + -32744; - /* Next insn is delay slot */ - r31=0x11898; - pc=0x3b800; - run_3b800(); return; + /* Next insn is delay slot */ + r31 = 0x11860; + pc = 0x10a00; + run_10a00(); + return; + case 0x11860: + r3 = 6 << 16; + writePages[(r3 + -10252) >>> 12][((r3 + -10252) >>> 2) & 0x3ff] = r2; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x114b4; + run_11400(); + return; + case 0x11874: + r4 = 5 << 16; + r4 = r4 + 20748; + /* Next insn is delay slot */ + r31 = 0x11884; + pc = 0x46000; + run_46000(); + return; + case 0x11884: + r4 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x11890; + pc = 0x40200; + run_40200(); + return; + case 0x11890: + /* Next insn is delay slot */ + r31 = 0x11898; + pc = 0x11000; + run_11000(); + return; case 0x11898: - r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x118d8; - continue; - } - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x118b0; - pc=0x30600; - run_30600(); return; - case 0x118b0: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x118bc; - pc=0x39200; - run_39200(); return; - case 0x118bc: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r17 + r0; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4 = 5 << 16; + r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r4 = r4 + 23620; + r5 = r0 + 1; + r6 = r0 + 34; + /* Next insn is delay slot */ + r31 = 0x118b8; + pc = 0x43e00; + run_43e00(); + return; + case 0x118b8: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4 = 5 << 16; + r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = r0 + 69; + r4 = r4 + 23688; + r5 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x118d8; + pc = 0x43e00; + run_43e00(); return; case 0x118d8: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r6 = readPages[(r28+-30844)>>>12][((r28+-30844)>>>2)&0x3ff]; - r5 = r5 + -9912; - /* Next insn is delay slot */ - r31=0x118f4; - pc=0x3bc00; - run_3bc00(); return; - case 0x118f4: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = r0 + 1; - r2 = r17 + r0; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + r6 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x1191c; + continue; + } + r16 = 5 << 16; + r16 = r16 + 23760; + case 0x118f0: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r7 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r5 = r16 + r0; + r18 = r18 + 12; + /* Next insn is delay slot */ + r31 = 0x1190c; + pc = 0x42000; + run_42000(); + return; + case 0x1190c: + r6 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x118f0; + continue; + } + case 0x1191c: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4 = r0 + 10; + r5 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x11930; + pc = 0x42200; + run_42200(); return; - case 0x11914: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r6 = readPages[(r28+-30840)>>>12][((r28+-30840)>>>2)&0x3ff]; - r5 = r5 + -9956; - /* Next insn is delay slot */ - r31=0x11930; - pc=0x3bc00; - run_3bc00(); return; case 0x11930: - r17 = r0 + 1; - /* Next insn is delay slot */ - pc=0x1187c; + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x1193c; + pc = 0x40200; + run_40200(); + return; + case 0x1193c: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4 = 5 << 16; + r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r4 = r4 + 23656; + r5 = r0 + 1; + r6 = r0 + 29; + r18 = 6 << 16; + /* Next insn is delay slot */ + r31 = 0x11960; + pc = 0x43e00; + run_43e00(); + return; + case 0x11960: + r18 = r18 + -26376; + /* Next insn is delay slot */ + pc = 0x118b8; + continue; + case 0x1196c: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4 = 5 << 16; + r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r4 = r4 + 23328; + r5 = r0 + 1; + r6 = r0 + 25; + /* Next insn is delay slot */ + r31 = 0x1198c; + pc = 0x43e00; + run_43e00(); + return; + case 0x1198c: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = 5 << 16; + r5 = r5 + 23388; + r6 = r6 + 28400; + /* Next insn is delay slot */ + r31 = 0x119ac; + pc = 0x42000; + run_42000(); + return; + case 0x119ac: + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x119b8; + pc = 0x40200; + run_40200(); + return; + case 0x119b8: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4 = 5 << 16; + r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r4 = r4 + 23356; + r5 = r0 + 1; + r6 = r0 + 30; + /* Next insn is delay slot */ + r31 = 0x119d8; + pc = 0x43e00; + run_43e00(); + return; + case 0x119d8: + /* Next insn is delay slot */ + pc = 0x1198c; continue; case 0x11a00: - pc=0x11a00; + pc = 0x11a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_11a00() throws ExecutionException { /* 0x11a00 - 0x11c00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x11a00: - r29 = r29 + -40; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x11a20; - pc=0x27600; - run_27600(); return; - case 0x11a20: - r4 = readPages[(r28+-30836)>>>12][((r28+-30836)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x11a2c; - pc=0x17400; - run_17400(); return; - case 0x11a2c: - r4 = readPages[(r28+-32752)>>>12][((r28+-32752)>>>2)&0x3ff]; - r2 = r0 + -1; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x11a48; + r29 = r29 + -48; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r16 = tmp; + r17 = r4 + r0; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x11b7c; continue; } - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x11a48; - pc=0x27e00; - run_27e00(); return; - case 0x11a48: - /* Next insn is delay slot */ - r31=0x11a50; - pc=0x18e00; - run_18e00(); return; - case 0x11a50: - /* Next insn is delay slot */ - r31=0x11a58; - pc=0x2e800; - run_2e800(); return; - case 0x11a58: - r2 = readPages[(r28+-30832)>>>12][((r28+-30832)>>>2)&0x3ff]; - writePages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff] = r0; - writePages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff] = r0; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x11b34; + r22 = 5 << 16; + r20 = 5 << 16; + r19 = 5 << 16; + r22 = r22 + 24936; + r21 = 6 << 16; + r20 = r20 + 25164; + r19 = r19 + 25204; + r18 = 5 << 16; + case 0x11a54: + r2 = r16 + -68; + r2 = r2 & 255; + r3 = (r2 & 0xffffffffL) < (51 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x11b04; continue; } - r18 = 7 << 16; - r19 = 7 << 16; + r2 = r2 << 2; + r2 = r22 + r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + return; + case 0x11a80: + r17 = r17 + 1; + r5 = 5 << 16; + r4 = r17 + r0; + r5 = r5 + 23836; + /* Next insn is delay slot */ + r31 = 0x11a98; + pc = 0x47e00; + run_47e00(); + return; + case 0x11a98: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11d28; + run_11c00(); + return; + } + r5 = 5 << 16; + r4 = r17 + r0; + r5 = r5 + 23852; + /* Next insn is delay slot */ + r31 = 0x11ab4; + pc = 0x47e00; + run_47e00(); + return; + case 0x11ab4: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11d50; + run_11c00(); + return; + } + r5 = 5 << 16; + r4 = r17 + r0; + r5 = r5 + 23864; + /* Next insn is delay slot */ + r31 = 0x11ad0; + pc = 0x47e00; + run_47e00(); + return; + case 0x11ad0: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11d3c; + run_11c00(); + return; + } + r5 = 5 << 16; + r4 = r17 + r0; + r5 = r5 + 23876; + /* Next insn is delay slot */ + r31 = 0x11aec; + pc = 0x47e00; + run_47e00(); + return; + case 0x11aec: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x11d68; + run_11c00(); + return; + } + r3 = r0 + 1; + r2 = 6 << 16; + writePages[(r2 + -10296) >>> 12][((r2 + -10296) >>> 2) & 0x3ff] = r3; r16 = r0 + r0; - r18 = r18 + 12832; - r19 = r19 + -9864; - /* Next insn is delay slot */ - pc=0x11ab8; - continue; - case 0x11a88: - r3 = readPages[(r28+-30828)>>>12][((r28+-30828)>>>2)&0x3ff]; - r4 = r2 + r0; - r17 = r3 + r17; - r5 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - r16 = r16 + 1; - /* Next insn is delay slot */ - r31=0x11aa4; - pc=0x19c00; - run_19c00(); return; - case 0x11aa4: - r2 = readPages[(r28+-30832)>>>12][((r28+-30832)>>>2)&0x3ff]; - r2 = r16 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x11b24; - continue; - } - case 0x11ab8: - r2 = readPages[(r28+-30828)>>>12][((r28+-30828)>>>2)&0x3ff]; - r17 = r16 << 2; - r2 = r2 + r17; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r5 = r18 + r0; - /* Next insn is delay slot */ - r31=0x11ad4; - pc=0x3b800; - run_3b800(); return; - case 0x11ad4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x11a88; - continue; - } - r2 = readPages[(r28+-30828)>>>12][((r28+-30828)>>>2)&0x3ff]; - r5 = r19 + r0; - r17 = r2 + r17; - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r16 = r16 + 1; - /* Next insn is delay slot */ - r31=0x11b00; - pc=0x3bc00; - run_3bc00(); return; - case 0x11b00: - r2 = readPages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30832)>>>12][((r28+-30832)>>>2)&0x3ff]; - r2 = r16 < r2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x11ab8; - continue; - } - case 0x11b24: - r2 = readPages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x11b60; - continue; - } + case 0x11b04: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = r16 + r0; + r22 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; case 0x11b34: - /* Next insn is delay slot */ - r31=0x11b3c; - pc=0x27800; - run_27800(); return; - case 0x11b3c: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + r2 = r21 + -10308; + r3 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r3 = r3 + 1; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r3; + addr = r17 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r16 = tmp; + r3 = r16 + -48; + r4 = r3 & 255; + r4 = (r4 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x11b70; + continue; + } + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r3; + addr = r17 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r16 = tmp; + r17 = r17 + 1; + case 0x11b70: + r17 = r17 + 1; + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x11a54; + continue; + } + case 0x11b7c: + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x11b04; + continue; + case 0x11b88: + r19 = 6 << 16; + r4 = r19 + -24536; + /* Next insn is delay slot */ + r31 = 0x11b98; + pc = 0x1c400; + run_1c400(); return; - case 0x11b60: - r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x11b6c; - pc=0x11800; - run_11800(); return; - case 0x11b6c: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x11b78; - pc=0x38e00; - run_38e00(); return; - case 0x11b78: + case 0x11b98: + addr = r17 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r5 = tmp; + r20 = r17 + 1; + r2 = r0 + 61; + r16 = r20 + r0; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x11bf0; + continue; + } + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x11d1c; + run_11c00(); + return; + } + r18 = r19 + -24536; + r17 = r0 + 61; + /* Next insn is delay slot */ + pc = 0x11bd0; + continue; + case 0x11bc8: + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x11d1c; + run_11c00(); + return; + } + case 0x11bd0: + r16 = r16 + 1; + r4 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x11be0; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x11be0: + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r5 = tmp; + if (r5 != r17) { + /* Next insn is delay slot */ + pc = 0x11bc8; + continue; + } + case 0x11bf0: + addr = r16 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11d1c; + run_11c00(); + return; + } case 0x11c00: - pc=0x11c00; + pc = 0x11c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_11c00() throws ExecutionException { /* 0x11c00 - 0x11e00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x11c00: - r29 = r29 + -32; - r2 = r0 + 1; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x11f10; - run_11e00(); return; - } - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r2 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - writePages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x11c38; - pc=0x16c00; - run_16c00(); return; - case 0x11c38: - /* Next insn is delay slot */ - r31=0x11c40; - pc=0x18200; - run_18200(); return; - case 0x11c40: - /* Next insn is delay slot */ - r31=0x11c48; - pc=0x28600; - run_28600(); return; - case 0x11c48: - r4 = 1 << 16; - r5 = 1 << 16; - r4 = r4 + 3072; - r5 = r5 + 4096; - /* Next insn is delay slot */ - r31=0x11c60; - pc=0x16800; - run_16800(); return; - case 0x11c60: - r6 = 7 << 16; - r5 = r28 + -30828; - r6 = r6 + -9824; - r4 = r28 + -30832; - /* Next insn is delay slot */ - r31=0x11c78; - pc=0x16e00; - run_16e00(); return; - case 0x11c78: - /* Next insn is delay slot */ - r31=0x11c80; - pc=0x15800; - run_15800(); return; - case 0x11c80: - /* Next insn is delay slot */ - r31=0x11c88; - pc=0x20400; - run_20400(); return; - case 0x11c88: - /* Next insn is delay slot */ - r31=0x11c90; - pc=0x22400; - run_22400(); return; - case 0x11c90: - r4 = readPages[(r28+-32756)>>>12][((r28+-32756)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x11c9c; - pc=0x26e00; - run_26e00(); return; - case 0x11c9c: - /* Next insn is delay slot */ - r31=0x11ca4; - pc=0x2e000; - run_2e000(); return; - case 0x11ca4: - r3 = 7 << 16; - r2 = r3 + 14544; - writePages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff] = r2; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; - writePages[(r3+14544)>>>12][((r3+14544)>>>2)&0x3ff] = r0; - r2 = r2 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x11ce0; - continue; - } - r4 = 7 << 16; - r4 = r4 + -9796; - /* Next insn is delay slot */ - r31=0x11ce0; - pc=0x40400; - run_40400(); return; - case 0x11ce0: - writePages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x11cec; - pc=0x11a00; - run_11a00(); return; - case 0x11cec: - r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x11d58; - continue; - } - r17 = 7 << 16; - r17 = r17 + -9784; - /* Next insn is delay slot */ - pc=0x11d18; - continue; - case 0x11d08: - r16 = r2 < r16 ? 1 : 0; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x11e50; - run_11e00(); return; - } - r16 = r2 + r0; - case 0x11d18: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; - r2 = r2 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x11d48; - continue; - } - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x11d48; - pc=0x40400; - run_40400(); return; - case 0x11d48: - /* Next insn is delay slot */ - r31=0x11d50; - pc=0x11a00; - run_11a00(); return; - case 0x11d50: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x11d08; - continue; - } - case 0x11d58: - r16 = readPages[(r28+-30852)>>>12][((r28+-30852)>>>2)&0x3ff]; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x11df4; - continue; - } - r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; - r2 = r2 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x11d90; - continue; - } - r4 = 7 << 16; - r4 = r4 + -9768; - /* Next insn is delay slot */ - r31=0x11d8c; - pc=0x40400; - run_40400(); return; - case 0x11d8c: - r16 = readPages[(r28+-30852)>>>12][((r28+-30852)>>>2)&0x3ff]; - case 0x11d90: - r17 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r4 = r16 + r0; - r5 = r28 + -32744; - /* Next insn is delay slot */ - r31=0x11da4; - pc=0x3b800; - run_3b800(); return; - case 0x11da4: - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x11ea0; - run_11e00(); return; - } - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x11dc8; - pc=0x11a00; - run_11a00(); return; - case 0x11dc8: - r16 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x11df4; - continue; - } - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x11df4; - continue; - } - /* Next insn is delay slot */ - r31=0x11df0; - pc=0x39200; - run_39200(); return; - case 0x11df0: - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r0; - case 0x11df4: - r4 = readPages[(r28+-30848)>>>12][((r28+-30848)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x11ec4; - run_11e00(); return; - } - case 0x11e00: - pc=0x11e00; + r4 = r16 + 1; + /* Next insn is delay slot */ + r31 = 0x11c0c; + pc = 0x10a00; + run_10a00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x11c0c: + r16 = r2 + r0; + r4 = r19 + -24536; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x11c20; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x11c20: + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x11c2c; + pc = 0x37e00; + run_37e00(); + return; + case 0x11c2c: + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x11b04; + run_11a00(); + return; + case 0x11c38: + addr = r17 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r16 = tmp; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x11cf8; + continue; + } + r4 = r17 + 1; + /* Next insn is delay slot */ + r31 = 0x11c54; + pc = 0x25e00; + run_25e00(); + return; + case 0x11c54: + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x11b04; + run_11a00(); + return; + case 0x11c60: + r4 = 5 << 16; + r4 = r4 + 20748; + /* Next insn is delay slot */ + r31 = 0x11c70; + pc = 0x46000; + run_46000(); + return; + case 0x11c70: + r4 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x11c7c; + pc = 0x40200; + run_40200(); + return; + case 0x11c7c: + /* Next insn is delay slot */ + r31 = 0x11c84; + pc = 0x11000; + run_11000(); + return; + case 0x11c84: + r4 = r18 + 25180; + /* Next insn is delay slot */ + r31 = 0x11c90; + pc = 0x1b400; + run_1b400(); + return; + case 0x11c90: + writePages[(r28 + -31396) >>> 12][((r28 + -31396) >>> 2) & 0x3ff] = r2; + addr = r17 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r16 = tmp; + /* Next insn is delay slot */ + pc = 0x11b70; + run_11a00(); + return; + case 0x11ca0: + r4 = r19 + r0; + /* Next insn is delay slot */ + r31 = 0x11cac; + pc = 0x1b400; + run_1b400(); + return; + case 0x11cac: + writePages[(r28 + -31404) >>> 12][((r28 + -31404) >>> 2) & 0x3ff] = r2; + addr = r17 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r16 = tmp; + /* Next insn is delay slot */ + pc = 0x11b70; + run_11a00(); + return; + case 0x11cbc: + r4 = r20 + r0; + /* Next insn is delay slot */ + r31 = 0x11cc8; + pc = 0x1b400; + run_1b400(); + return; + case 0x11cc8: + writePages[(r28 + -31408) >>> 12][((r28 + -31408) >>> 2) & 0x3ff] = r2; + addr = r17 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r16 = tmp; + /* Next insn is delay slot */ + pc = 0x11b70; + run_11a00(); + return; + case 0x11cd8: + /* Next insn is delay slot */ + r31 = 0x11ce0; + pc = 0x1b000; + run_1b000(); + return; + case 0x11ce0: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x11cec; + pc = 0x10c00; + run_10c00(); + return; + case 0x11cec: + addr = r17 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r16 = tmp; + /* Next insn is delay slot */ + pc = 0x11b70; + run_11a00(); + return; + case 0x11cf8: + r4 = 5 << 16; + r4 = r4 + 23820; + /* Next insn is delay slot */ + r31 = 0x11d08; + pc = 0x1b400; + run_1b400(); + return; + case 0x11d08: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x11d14; + pc = 0x25e00; + run_25e00(); + return; + case 0x11d14: + /* Next insn is delay slot */ + pc = 0x11b04; + run_11a00(); + return; + case 0x11d1c: + r4 = r20 + r0; + /* Next insn is delay slot */ + r31 = 0x11d28; + pc = 0x10600; + run_10600(); + return; + case 0x11d28: + r2 = 6 << 16; + writePages[(r2 + -10300) >>> 12][((r2 + -10300) >>> 2) & 0x3ff] = r0; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x11b04; + run_11a00(); + return; + case 0x11d3c: + r2 = 6 << 16; + writePages[(r2 + -10292) >>> 12][((r2 + -10292) >>> 2) & 0x3ff] = r0; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x11b04; + run_11a00(); + return; + case 0x11d50: + r3 = r0 + 4; + r2 = 6 << 16; + writePages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff] = r3; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x11b04; + run_11a00(); + return; + case 0x11d68: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = 5 << 16; + r5 = r5 + 23892; + r6 = r6 + 28248; + /* Next insn is delay slot */ + r31 = 0x11d88; + pc = 0x42000; + run_42000(); + return; + case 0x11d88: + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x11d94; + pc = 0x40200; + run_40200(); + return; + case 0x11d94: + case 0x11e00: + pc = 0x11e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_11e00() throws ExecutionException { /* 0x11e00 - 0x12000 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x11e00: - r5 = r28 + -32748; - /* Next insn is delay slot */ - r31=0x11e10; - pc=0x3b800; - run_3b800(); return; - case 0x11e10: + r29 = r29 + -32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r16 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r17 = r4 + r0; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x11e3c; + continue; + } + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x11e3c; + continue; + } + /* Next insn is delay slot */ + r31 = 0x11e38; + pc = 0x40600; + run_40600(); + return; + case 0x11e38: + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r0; + case 0x11e3c: + r4 = readPages[(r28 + -31396) >>> 12][((r28 + -31396) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x11e7c; + continue; + } + r5 = r28 + -32756; + /* Next insn is delay slot */ + r31 = 0x11e58; + pc = 0x41e00; + run_41e00(); + return; + case 0x11e58: r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x11eec; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11f14; continue; } r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x11e28; - pc=0x27000; - run_27000(); return; - case 0x11e28: + /* Next insn is delay slot */ + r31 = 0x11e70; + pc = 0x38000; + run_38000(); + return; + case 0x11e70: r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x11e34; - pc=0x39200; - run_39200(); return; - case 0x11e34: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = r0 + r0; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x11800; - run_11800(); return; - case 0x11e50: - r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; - r2 = r2 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x11e74; + /* Next insn is delay slot */ + r31 = 0x11e7c; + pc = 0x40600; + run_40600(); + return; + case 0x11e7c: + r4 = readPages[(r28 + -31400) >>> 12][((r28 + -31400) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x11ebc; continue; } - r4 = 7 << 16; - r4 = r4 + -9688; - /* Next insn is delay slot */ - r31=0x11e74; - pc=0x40400; - run_40400(); return; - case 0x11e74: - r2 = 2 << 16; - r2 = r2 + -20480; - writePages[(r28+-30824)>>>12][((r28+-30824)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x11e98; - pc=0x11a00; - run_11a00(); return; - case 0x11e98: - /* Next insn is delay slot */ - pc=0x11e34; - continue; - case 0x11ea0: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r5 = r5 + -9728; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x11ebc; - pc=0x3bc00; - run_3bc00(); return; - case 0x11ebc: - /* Next insn is delay slot */ - pc=0x11df4; - run_11c00(); return; - case 0x11ec4: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r4 = 7 << 16; - r7 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r4 = r4 + -9652; - r5 = r0 + 1; - r6 = r0 + 75; - /* Next insn is delay slot */ - r31=0x11ee4; - pc=0x3dc00; - run_3dc00(); return; - case 0x11ee4: - /* Next insn is delay slot */ - pc=0x11e34; - continue; - case 0x11eec: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r6 = readPages[(r28+-30848)>>>12][((r28+-30848)>>>2)&0x3ff]; - r5 = r5 + -9576; - /* Next insn is delay slot */ - r31=0x11f08; - pc=0x3bc00; - run_3bc00(); return; - case 0x11f08: - /* Next insn is delay slot */ - pc=0x11e34; - continue; - case 0x11f10: - /* Next insn is delay slot */ - r31=0x11f18; - pc=0x10a00; - run_10a00(); return; - case 0x11f18: - case 0x12000: - pc=0x12000; + r5 = r28 + -32756; + /* Next insn is delay slot */ + r31 = 0x11e98; + pc = 0x41e00; + run_41e00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x11e98: + r16 = r2 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x11ed8; + continue; + } + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x11eb0; + pc = 0x38200; + run_38200(); + return; + case 0x11eb0: + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x11ebc; + pc = 0x40600; + run_40600(); + return; + case 0x11ebc: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r17 + r0; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x11ed8: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = readPages[(r28 + -31400) >>> 12][((r28 + -31400) >>> 2) & 0x3ff]; + r5 = r5 + 23964; + /* Next insn is delay slot */ + r31 = 0x11ef4; + pc = 0x42000; + run_42000(); + return; + case 0x11ef4: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = r0 + 1; + r2 = r17 + r0; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x11f14: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = readPages[(r28 + -31396) >>> 12][((r28 + -31396) >>> 2) & 0x3ff]; + r5 = r5 + 23920; + /* Next insn is delay slot */ + r31 = 0x11f30; + pc = 0x42000; + run_42000(); + return; + case 0x11f30: + r17 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x11e7c; + continue; + case 0x12000: + pc = 0x12000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_12000() throws ExecutionException { /* 0x12000 - 0x12200 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x12000: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r29 = r29 + -24; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r16 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r16 = r16 + r2; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - r3 = r2 & 256; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x120b0; - continue; - } - f12 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - f13 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + r29 = r29 + -48; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + r19 = 6 << 16; + r2 = readPages[(r19 + -10328) >>> 12][((r19 + -10328) >>> 2) & 0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + r2 = r2 + 1; + writePages[(r19 + -10328) >>> 12][((r19 + -10328) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x12038; + pc = 0x2c400; + run_2c400(); + return; + case 0x12038: + r4 = readPages[(r28 + -31392) >>> 12][((r28 + -31392) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x12044; + pc = 0x1be00; + run_1be00(); + return; case 0x12044: - f0 = readPages[(r28+-32404)>>>12][((r28+-32404)>>>2)&0x3ff]; - f1 = readPages[(r28+-32408)>>>12][((r28+-32408)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<=(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x12084; + r2 = 6 << 16; + r4 = readPages[(r2 + -10240) >>> 12][((r2 + -10240) >>> 2) & 0x3ff]; + r2 = r0 + -1; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x12064; continue; } - f0 = readPages[(r28+-32396)>>>12][((r28+-32396)>>>2)&0x3ff]; - f1 = readPages[(r28+-32400)>>>12][((r28+-32400)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))<=(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x12104; - continue; - } - case 0x12084: - r2 = r2 & 16; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x120d0; - continue; - } - case 0x12090: - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r0; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; - case 0x12098: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x12064; + pc = 0x2d800; + run_2d800(); return; - case 0x120b0: - f0 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r2 = r2 | 256; - { long l = Double.doubleToLongBits(((double)f0)); f13 = (int)(l >>> 32); f12 = (int)l; } - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = f12; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f13; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x12044; + case 0x12064: + /* Next insn is delay slot */ + r31 = 0x1206c; + pc = 0x1de00; + run_1de00(); + return; + case 0x1206c: + /* Next insn is delay slot */ + r31 = 0x12074; + pc = 0x36c00; + run_36c00(); + return; + case 0x12074: + r2 = readPages[(r28 + -31388) >>> 12][((r28 + -31388) >>> 2) & 0x3ff]; + r19 = r19 + -10328; + writePages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r19 + 12) >>> 12][((r19 + 12) >>> 2) & 0x3ff] = r0; + if (r2 <= 0) { + /* Next insn is delay slot */ + pc = 0x12170; + continue; + } + r18 = 6 << 16; + r20 = 5 << 16; + r21 = 5 << 16; + r16 = r0 + r0; + r18 = r18 + -15264; + r20 = r20 + 24012; + r21 = r21 + 24052; + /* Next insn is delay slot */ + pc = 0x120e4; continue; + case 0x120b4: + r3 = readPages[(r28 + -31384) >>> 12][((r28 + -31384) >>> 2) & 0x3ff]; + r4 = r2 + r0; + r17 = r3 + r17; + r5 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + r16 = r16 + 1; + /* Next insn is delay slot */ + r31 = 0x120d0; + pc = 0x1f600; + run_1f600(); + return; case 0x120d0: - r4 = 7 << 16; - r4 = r4 + -9252; - /* Next insn is delay slot */ - r31=0x120e0; - pc=0x1b000; - run_1b000(); return; - case 0x120e0: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r16 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - r2 = r2 + -24; - r16 = r16 + r2; - /* Next insn is delay slot */ - pc=0x12090; - continue; - case 0x12104: - /* Next insn is delay slot */ - pc=r4; - r31=0x1210c; + r2 = readPages[(r28 + -31388) >>> 12][((r28 + -31388) >>> 2) & 0x3ff]; + r2 = r16 < r2 ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x12170; + continue; + } + case 0x120e4: + r2 = readPages[(r28 + -31384) >>> 12][((r28 + -31384) >>> 2) & 0x3ff]; + r17 = r16 << 2; + r2 = r2 + r17; + r4 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r5 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x12100; + pc = 0x41e00; + run_41e00(); return; - case 0x1210c: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = f0; - r3 = r2 << 3; - r2 = r2 << 5; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f1; - r2 = r2 - r3; - r16 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r16 = r16 + r2; - /* Next insn is delay slot */ - pc=0x12098; + case 0x12100: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x120b4; + continue; + } + r2 = readPages[(r28 + -31384) >>> 12][((r28 + -31384) >>> 2) & 0x3ff]; + r3 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r2 = r2 + r17; + r4 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + r6 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r5 = r20 + r0; + /* Next insn is delay slot */ + r31 = 0x12128; + pc = 0x42000; + run_42000(); + return; + case 0x12128: + r2 = readPages[(r28 + -31384) >>> 12][((r28 + -31384) >>> 2) & 0x3ff]; + r17 = r2 + r17; + r2 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 45; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x121b0; + continue; + } + case 0x1214c: + r2 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; + r16 = r16 + 1; + r2 = r2 + 1; + writePages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31388) >>> 12][((r28 + -31388) >>> 2) & 0x3ff]; + r2 = r16 < r2 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x120e4; + continue; + } + case 0x12170: + /* Next insn is delay slot */ + r31 = 0x12178; + pc = 0x2c600; + run_2c600(); + return; + case 0x12178: + r2 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x121d4; + continue; + } + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x121b0: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4 = r21 + r0; + r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r5 = r0 + 1; + r6 = r0 + 65; + /* Next insn is delay slot */ + r31 = 0x121cc; + pc = 0x43e00; + run_43e00(); + return; + case 0x121cc: + /* Next insn is delay slot */ + pc = 0x1214c; continue; + case 0x121d4: + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x121e0; + pc = 0x11e00; + run_11e00(); + return; + case 0x121e0: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x121ec; + pc = 0x40200; + run_40200(); + return; + case 0x121ec: case 0x12200: - pc=0x12200; + pc = 0x12200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_12200() throws ExecutionException { /* 0x12200 - 0x12400 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x12200: - r29 = r29 + -40; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - r18 = r5 + r0; - r5 = r0 + 32; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - r17 = r6 + r0; - /* Next insn is delay slot */ - r31=0x1222c; - pc=0x2f400; - run_2f400(); return; - case 0x1222c: + r29 = r29 + -48; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + r17 = 6 << 16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = r17 + -10308; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r18; + /* Next insn is delay slot */ + r31 = 0x12230; + pc = 0x1fa00; + run_1fa00(); + return; + case 0x12230: + r2 = r0 + 1; + r5 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + if (r16 == r2) { + /* Next insn is delay slot */ + pc = 0x125e0; + run_12400(); + return; + } + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x1224c; + pc = 0x1b600; + run_1b600(); + return; + case 0x1224c: + /* Next insn is delay slot */ + r31 = 0x12254; + pc = 0x2e000; + run_2e000(); + return; + case 0x12254: + r4 = 1 << 16; + r5 = 1 << 16; + r4 = r4 + 6656; + r5 = r5 + 4608; + /* Next insn is delay slot */ + r31 = 0x1226c; + pc = 0x1b200; + run_1b200(); + return; + case 0x1226c: + r6 = 5 << 16; + r4 = r28 + -31388; + r5 = r28 + -31384; + r6 = r6 + 24120; + r17 = r17 + -10308; + /* Next insn is delay slot */ + r31 = 0x12288; + pc = 0x1b800; + run_1b800(); + return; + case 0x12288: + r2 = readPages[(r17 + 68) >>> 12][((r17 + 68) >>> 2) & 0x3ff]; + r3 = r0 + -1; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x122ac; + continue; + } + r3 = readPages[(r17 + 60) >>> 12][((r17 + 60) >>> 2) & 0x3ff]; + r2 = r2 < r3 ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x125c8; + run_12400(); + return; + } + case 0x122ac: + r2 = readPages[(r17 + 72) >>> 12][((r17 + 72) >>> 2) & 0x3ff]; + r3 = r0 + -1; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x122d0; + continue; + } + r3 = readPages[(r17 + 60) >>> 12][((r17 + 60) >>> 2) & 0x3ff]; + r3 = r2 < r3 ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x125b0; + run_12400(); + return; + } + case 0x122d0: + r3 = readPages[(r17 + 76) >>> 12][((r17 + 76) >>> 2) & 0x3ff]; + r4 = r0 + -1; + if (r3 == r4) { + /* Next insn is delay slot */ + pc = 0x12308; + continue; + } + r5 = readPages[(r17 + 60) >>> 12][((r17 + 60) >>> 2) & 0x3ff]; + r5 = r5 < r3 ? 1 : 0; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x12598; + run_12400(); + return; + } + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x12308; + continue; + } + r2 = r2 < r3 ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1256c; + run_12400(); + return; + } + case 0x12308: + /* Next insn is delay slot */ + r31 = 0x12310; + pc = 0x2bc00; + run_2bc00(); + return; + case 0x12310: + r3 = 6 << 16; + r2 = r3 + -13800; + writePages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff] = r2; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r0; + r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + writePages[(r3 + -13800) >>> 12][((r3 + -13800) >>> 2) & 0x3ff] = r0; + r2 = r2 < 2 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1234c; + continue; + } + r4 = 5 << 16; + r4 = r4 + 24344; + /* Next insn is delay slot */ + r31 = 0x1234c; + pc = 0x46000; + run_46000(); + return; + case 0x1234c: + r2 = 6 << 16; + r18 = r2 + -10328; + r3 = r0 + -1; + writePages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x12368; + pc = 0x12000; + run_12000(); + return; + case 0x12368: + r16 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x123d0; + continue; + } + r19 = 5 << 16; + r19 = r19 + 24356; + /* Next insn is delay slot */ + pc = 0x12398; + continue; + case 0x12388: + r16 = r2 < r16 ? 1 : 0; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x124c0; + run_12400(); + return; + } r16 = r2 + r0; - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r19 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x122d4; + case 0x12398: + r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r2 = r2 < 2 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x123b8; continue; } - case 0x12250: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x12270; - continue; - } - r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; - case 0x12270: - r17 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r5 = r16 + r0; - r2 = r17 << 3; - r3 = r17 << 5; - r3 = r3 - r2; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r6 = r0 + 24; - r3 = r2 + r3; - r4 = r3 + r0; - /* Next insn is delay slot */ - r31=0x1229c; - pc=0x48fdc; - run_48e00(); return; - case 0x1229c: - r3 = r2 + r0; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = r17 + 1; - r2 = r2 | 64; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r17; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + r4 = r19 + r0; + /* Next insn is delay slot */ + r31 = 0x123b8; + pc = 0x46000; + run_46000(); return; - case 0x122d4: - r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x12328; + case 0x123b8: + /* Next insn is delay slot */ + r31 = 0x123c0; + pc = 0x12000; + run_12000(); + return; + case 0x123c0: + r2 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x12388; continue; } - case 0x122e8: - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x122f4; - pc=0x17e00; - run_17e00(); return; - case 0x122f4: - r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - r5 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = ((r5 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x12344; - continue; + case 0x123d0: + r16 = readPages[(r28 + -31408) >>> 12][((r28 + -31408) >>> 2) & 0x3ff]; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x1245c; + run_12400(); + return; } - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r17; - case 0x12314: - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x12320; - pc=0x17c00; - run_17c00(); return; - case 0x12320: - /* Next insn is delay slot */ - pc=0x12250; - continue; - case 0x12328: - r5 = r0 + 46; - /* Next insn is delay slot */ - r31=0x12334; - pc=0x17c00; - run_17c00(); return; - case 0x12334: - r17 = r17 + 1; - r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x122e8; - continue; - case 0x12344: - r4 = 7 << 16; - r4 = r4 + -9228; - r5 = r5 - r17; - /* Next insn is delay slot */ - r31=0x12358; - pc=0x1b800; - run_1b800(); return; - case 0x12358: - r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x12314; - continue; + r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r2 = r2 < 2 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x12408; + run_12400(); + return; + } + r4 = 5 << 16; + r4 = r4 + 24372; + /* Next insn is delay slot */ + r31 = 0x12404; + pc = 0x46000; + run_46000(); + return; case 0x12400: - pc=0x12400; + pc = 0x12400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_12400() throws ExecutionException { /* 0x12400 - 0x12600 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x12400: - r29 = r29 + -136; - writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = f20; - writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = f21; - f20 = readPages[(r28+-32396)>>>12][((r28+-32396)>>>2)&0x3ff]; - r2 = r0 + 1; - writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r2; - f21 = readPages[(r28+-32400)>>>12][((r28+-32400)>>>2)&0x3ff]; - r2 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r23; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r19; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r18; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r17; - r23 = r28 + -32444; - r19 = 7 << 16; - r18 = 7 << 16; - r17 = 7 << 16; - writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r22; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r21; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r20; - writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = f22; - writePages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff] = f23; - writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r31; - writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r30; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r16; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = f28; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = f29; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = f26; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = f27; - writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = f24; - writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = f25; - r21 = r4 + r0; - writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r0; - writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r0; - writePages[(r28+-30808)>>>12][((r28+-30808)>>>2)&0x3ff] = r0; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r23; - r22 = r0 + 1; - r20 = r0 + r0; - r19 = r19 + -7236; - r18 = r18 + -8652; - f22 = f20; - f23 = f21; - r17 = r17 + -8284; - case 0x124a4: - r5 = readPages[(r28+-32736)>>>12][((r28+-32736)>>>2)&0x3ff]; - r22 = r22 < r5 ? 1 : 0; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x125fc; + case 0x12404: + r16 = readPages[(r28 + -31408) >>> 12][((r28 + -31408) >>> 2) & 0x3ff]; + case 0x12408: + r17 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + r4 = r16 + r0; + r5 = r28 + -32756; + /* Next insn is delay slot */ + r31 = 0x1241c; + pc = 0x41e00; + run_41e00(); + return; + case 0x1241c: + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r2; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x124fc; continue; } - case 0x124b8: - r2 = readPages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff]; - r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r3 < r2 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x12648; - run_12600(); return; - } - case 0x124d0: - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - r3 = r0 + 1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x12694; - run_12600(); return; - } - case 0x124e0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x126d4; - run_12600(); return; - } - r3 = r0 + 2; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x125d8; + /* Next insn is delay slot */ + r31 = 0x12430; + pc = 0x12000; + run_12000(); + return; + case 0x12430: + r16 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x1245c; continue; } - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r2 = r22 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x12720; - run_12600(); return; - } - r2 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r3 = r22 << 2; - r3 = r3 + -8; - r16 = r2 + r3; - r3 = r3 + 4; - r2 = r2 + r3; - r6 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r30 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - addr=r6+4; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - addr=r30+4; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r3 = r4 < r5 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x12720; - run_12600(); return; - } - if(r4 == r5) { - /* Next insn is delay slot */ - pc=0x12714; - run_12600(); return; - } - case 0x12548: - r5 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - r3 = (r5&0xffffffffL) < (38&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1435c; - run_14200(); return; - } - r4 = 7 << 16; - r3 = r5 << 2; - r4 = r4 + -8804; - r3 = r4 + r3; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r3; - return; - case 0x1257c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x143c4; - run_14200(); return; - } - case 0x1258c: - r2 = r2 & 255; - r2 = r19 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r2 & 8; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x13338; - run_13200(); return; - } - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x13314; - run_13200(); return; - } - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r3 = r28 + -32644; - r2 = r22 + 1; - writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r22 = r22 << 2; - r2 = r2 + r22; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - case 0x125d8: - r3 = (r2&0xffffffffL) < (3&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1275c; - run_12600(); return; - } - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r5 = readPages[(r28+-32736)>>>12][((r28+-32736)>>>2)&0x3ff]; - r22 = r22 < r5 ? 1 : 0; - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x124b8; + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x1245c; continue; } - case 0x125fc: - r4 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - case 0x12600: - pc=0x12600; + /* Next insn is delay slot */ + r31 = 0x12458; + pc = 0x40600; + run_40600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_12600() throws ExecutionException { /* 0x12600 - 0x12800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x12600: - r2 = r5 << 1; - r5 = r5 << 3; - writePages[(r28+-32736)>>>12][((r28+-32736)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x12614; - pc=0x40600; - run_40600(); return; - case 0x12614: - writePages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff] = r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x124b8; - run_12400(); return; - } - r4 = 7 << 16; - r4 = r4 + -6876; - /* Next insn is delay slot */ - r31=0x12630; - pc=0x1b200; - run_1b200(); return; - case 0x12630: - r2 = readPages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff]; - r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r3 < r2 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x124d0; - run_12400(); return; - } - case 0x12648: - r3 = r2 << 1; - r5 = r2 << 4; - r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 << 6; - r5 = r2 - r5; - writePages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x12668; - pc=0x40600; - run_40600(); return; - case 0x12668: - writePages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff] = r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x124d0; - run_12400(); return; - } - r4 = 7 << 16; - r4 = r4 + -6876; - /* Next insn is delay slot */ - r31=0x12684; - pc=0x1b200; - run_1b200(); return; - case 0x12684: - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - r3 = r0 + 1; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x124e0; - run_12400(); return; - } - case 0x12694: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x129b8; - run_12800(); return; - } - r3 = r2 + r0; - case 0x126a8: - r2 = r3 + -33; - r2 = r2 & 255; - r4 = (r2&0xffffffffL) < (92&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x13038; - run_13000(); return; - } - r2 = r2 << 2; - r2 = r18 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x126d4: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x129cc; - run_12800(); return; - } - r22 = r2 + r0; - case 0x126e8: - r2 = r22 + -33; - r2 = r2 & 255; - r3 = (r2&0xffffffffL) < (62&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x12804; - run_12800(); return; - } - r2 = r2 << 2; - r2 = r17 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x12714: - r4 = r4 & 1; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x12548; - run_12400(); return; - } - case 0x12720: - writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x124a4; - run_12400(); return; - case 0x1272c: - /* Next insn is delay slot */ - r31=0x12734; - pc=0x1c000; - run_1c000(); return; - case 0x12734: - r3 = r0 + 61; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x131a8; - run_13000(); return; - } - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x12750; - pc=0x1b000; - run_1b000(); return; - case 0x12750: - r2 = r0 + 4; - writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; - r2 = r0 + 4; - case 0x1275c: - r3 = r0 + 5; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x128a4; - run_12800(); return; - } - case 0x12768: - f28 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - f26 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - f24 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; - f22 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; - f20 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; - r31 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r2 = r20 + r0; - r30 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r23 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r22 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r21 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r20 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r19 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r18 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r17 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r16 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - f29 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - f27 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - f25 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; - f23 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - f21 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x127c8: - r16 = r28 + -32596; - case 0x127cc: - /* Next insn is delay slot */ - r31=0x127d4; - pc=0x1c000; - run_1c000(); return; - case 0x127d4: - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r3 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r2 = r22 + r0; - r2 = r2 << 2; - r2 = r3 + r2; - r22 = r22 + 1; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r16; - r2 = r0 + 2; - writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r22; - writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x124a4; - run_12400(); return; - case 0x12800: - pc=0x12800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_12800() throws ExecutionException { /* 0x12800 - 0x12a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x12800: - case 0x12804: - r22 = r22 & 255; - r2 = r22 + -48; - r2 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x13370; - run_13200(); return; - } - r22 = r19 + r22; - addr=r22+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1445c; - run_14400(); return; - } - r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r4 = r3 << 5; - r2 = r3 << 3; - r2 = r4 - r2; - r3 = r3 + 1; - r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r3; - r3 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r2 = r4 + r2; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - r4 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - r2 = r3 << 2; - r2 = r2 + -4; - r2 = r4 + r2; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r4 == r23) { - /* Next insn is delay slot */ - pc=0x13504; - run_13400(); return; - } - case 0x12880: - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x12890; - pc=0x1b000; - run_1b000(); return; - case 0x12890: - r2 = r0 + 4; - r3 = r0 + 5; - writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x12768; - run_12600(); return; - } - case 0x128a4: - r5 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = r0 + 1; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x128c4; + case 0x12458: + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r0; + case 0x1245c: + r4 = readPages[(r28 + -31404) >>> 12][((r28 + -31404) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x12520; continue; } - r4 = 7 << 16; - r4 = r4 + -8912; - /* Next insn is delay slot */ - r31=0x128c4; - pc=0x1b800; - run_1b800(); return; - case 0x128c4: - r5 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r2 = r0 + 1; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x128e4; - continue; - } - r4 = 7 << 16; - r4 = r4 + -8888; - /* Next insn is delay slot */ - r31=0x128e4; - pc=0x1b800; - run_1b800(); return; - case 0x128e4: - r5 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r21 + r0; - r6 = r0 + 24; - /* Next insn is delay slot */ - r31=0x128f8; - pc=0x48fdc; - run_48e00(); return; - case 0x128f8: - r3 = readPages[(r28+-30808)>>>12][((r28+-30808)>>>2)&0x3ff]; - r2 = readPages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff]; - r2 = r3 | r2; - r4 = r2 & 4; - r3 = r2 + r0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x12ad4; - run_12a00(); return; - } - r4 = r2 & 2; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x131f4; - run_13000(); return; - } - writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r2; - case 0x12928: - r4 = r2 & 64; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x12940; - continue; - } - r3 = r0 + -17; - r3 = r2 & r3; - writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r3; - case 0x12940: - r2 = r3 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x131b4; - run_13000(); return; - } - r2 = r3 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x13250; - run_13200(); return; - } - r2 = r3 & 32; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x12768; - run_12600(); return; - } - f0 = readPages[(r21+12)>>>12][((r21+12)>>>2)&0x3ff]; - f2 = readPages[(r28+-32372)>>>12][((r28+-32372)>>>2)&0x3ff]; - f1 = readPages[(r21+8)>>>12][((r21+8)>>>2)&0x3ff]; - f3 = readPages[(r28+-32376)>>>12][((r28+-32376)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<=(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x12768; - run_12600(); return; - } - f2 = readPages[(r28+-32364)>>>12][((r28+-32364)>>>2)&0x3ff]; - f3 = readPages[(r28+-32368)>>>12][((r28+-32368)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<=(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x12768; - run_12600(); return; - } - r3 = r3 | 8; - writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x12768; - run_12600(); return; - case 0x129b8: - /* Next insn is delay slot */ - r31=0x129c0; - pc=0x1c000; - run_1c000(); return; - case 0x129c0: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - /* Next insn is delay slot */ - pc=0x126a8; - run_12600(); return; - case 0x129cc: - /* Next insn is delay slot */ - r31=0x129d4; - pc=0x1c000; - run_1c000(); return; - case 0x129d4: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r22 = tmp; - /* Next insn is delay slot */ - pc=0x126e8; - run_12600(); return; - case 0x129e0: - r16 = r28 + -32652; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x129ec: - r16 = r28 + -32636; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x129f8: - r16 = r28 + -32492; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x12a00: - pc=0x12a00; + r5 = r28 + -32760; + /* Next insn is delay slot */ + r31 = 0x12478; + pc = 0x41e00; + run_41e00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_12a00() throws ExecutionException { /* 0x12a00 - 0x12c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x12a00: - case 0x12a04: - r16 = r28 + -32452; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x12a10: - r16 = r28 + -32612; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x12a1c: - r16 = r28 + -32604; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x12a28: - r16 = r28 + -32620; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x12a34: - /* Next insn is delay slot */ - r31=0x12a3c; - pc=0x1c000; - run_1c000(); return; - case 0x12a3c: - r3 = r0 + 61; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x134d0; - run_13400(); return; - } - r3 = r0 + 62; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x131a8; - run_13000(); return; - } - r3 = r0 + 60; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x134c4; - run_13400(); return; - } - r16 = r28 + -32524; - /* Next insn is delay slot */ - pc=0x127d4; - run_12600(); return; - case 0x12a6c: - /* Next insn is delay slot */ - r31=0x12a74; - pc=0x1c000; - run_1c000(); return; - case 0x12a74: - r3 = r0 + 61; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x14378; - run_14200(); return; - } - r16 = r28 + -32500; - /* Next insn is delay slot */ - pc=0x127d4; - run_12600(); return; - case 0x12a8c: - r16 = r28 + -32468; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x12a98: - /* Next insn is delay slot */ - r31=0x12aa0; - pc=0x1c000; - run_1c000(); return; - case 0x12aa0: + case 0x12478: r16 = r2 + r0; - r2 = r0 + 61; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x134f8; - run_13400(); return; - } - r2 = r0 + 62; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x134dc; - run_13400(); return; - } - r2 = r0 + 60; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x131a8; - run_13000(); return; - } - r16 = r28 + -32540; - /* Next insn is delay slot */ - pc=0x127d4; - run_12600(); return; - case 0x12ad4: - r3 = r0 + -4; - r2 = r2 & r3; - writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r2; - r3 = r2 + r0; - /* Next insn is delay slot */ - pc=0x12928; - run_12800(); return; - case 0x12aec: - r16 = r28 + -32548; - case 0x12af0: - /* Next insn is delay slot */ - r31=0x12af8; - pc=0x1c000; - run_1c000(); return; - case 0x12af8: - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r2 = r22 + 1; - writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r22 = r22 << 2; - r22 = r2 + r22; - writePages[(r22+0)>>>12][((r22+0)>>>2)&0x3ff] = r16; - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x125d8; - run_12400(); return; - case 0x12b24: - r16 = r28 + -32556; - /* Next insn is delay slot */ - pc=0x12af0; - continue; - case 0x12b30: - r16 = r28 + -32564; - /* Next insn is delay slot */ - pc=0x12af0; - continue; - case 0x12b3c: - /* Next insn is delay slot */ - r31=0x12b44; - pc=0x1c000; - run_1c000(); return; - case 0x12b44: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r3 = r2 + -48; - r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1320c; - run_13200(); return; - } - f26 = readPages[(r28+-32396)>>>12][((r28+-32396)>>>2)&0x3ff]; - f28 = r0; - f24 = readPages[(r28+-32388)>>>12][((r28+-32388)>>>2)&0x3ff]; - f27 = readPages[(r28+-32400)>>>12][((r28+-32400)>>>2)&0x3ff]; - f29 = r0; - f25 = readPages[(r28+-32392)>>>12][((r28+-32392)>>>2)&0x3ff]; - case 0x12b78: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))*(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f29 = (int)(l >>> 32); f28 = (int)l; } - r2 = r2 & 15; - f2 = r2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))*(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f29 = (int)(l >>> 32); f28 = (int)l; } - /* Next insn is delay slot */ - r31=0x12b98; - pc=0x1c000; - run_1c000(); return; - case 0x12b98: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r3 = r2 + -48; - r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x12b78; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x12548; continue; } - case 0x12bb0: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))/(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } - r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r4 = r3 << 5; - r2 = r3 << 3; - r2 = r4 - r2; - r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r3 + 1; - r2 = r4 + r2; - r4 = r0 + 336; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r4; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = f26; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = f27; - writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r3; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x12c58; - run_12c00(); return; - case 0x12bf4: - /* Next insn is delay slot */ - r31=0x12bfc; - pc=0x1c000; - run_1c000(); return; - case 0x12bfc: - r4 = r29 + 16; - case 0x12c00: - pc=0x12c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_12c00() throws ExecutionException { /* 0x12c00 - 0x12e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x12c00: - /* Next insn is delay slot */ - r31=0x12c08; - pc=0x28000; - run_28000(); return; - case 0x12c08: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r3 = r2 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x13260; - run_13200(); return; - } r4 = r2 + r0; - case 0x12c20: - r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r4 = r4 | 64; - r5 = r3 << 5; - r2 = r3 << 3; - r2 = r5 - r2; - r5 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r3 + 1; - r2 = r5 + r2; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r4; - writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r3; - r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; - case 0x12c58: - r2 = r0 + 1; - writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x124a4; - run_12400(); return; - case 0x12c6c: - r16 = r28 + -32660; - /* Next insn is delay slot */ - pc=0x12af0; - run_12a00(); return; - case 0x12c78: - /* Next insn is delay slot */ - r31=0x12c80; - pc=0x1c000; - run_1c000(); return; - case 0x12c80: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r3 = r2 + -48; - r3 = (r3&0xffffffffL) < (8&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x144a4; - run_14400(); return; - } - r22 = r0 + r0; - r16 = r0 + r0; - case 0x12ca0: - r2 = r2 & 7; - r16 = r16 << 3; - r16 = r16 + r2; - /* Next insn is delay slot */ - r31=0x12cb4; - pc=0x1c000; - run_1c000(); return; - case 0x12cb4: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r22 = r22 + 1; - r3 = r2 + -48; - r3 = (r3&0xffffffffL) < (8&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x12ca0; + /* Next insn is delay slot */ + r31 = 0x12490; + pc = 0x2be00; + run_2be00(); + return; + case 0x12490: + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x1249c; + pc = 0x40600; + run_40600(); + return; + case 0x1249c: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r4 = r0 + r0; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = 0x11e00; + run_11e00(); + return; + case 0x124c0: + r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r2 = r2 < 2 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x124e4; continue; } - r2 = r22 < 4 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1319c; - run_13000(); return; + r4 = 5 << 16; + r4 = r4 + 24452; + /* Next insn is delay slot */ + r31 = 0x124e4; + pc = 0x46000; + run_46000(); + return; + case 0x124e4: + r2 = r0 + 1; + writePages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x124f4; + pc = 0x12000; + run_12000(); + return; + case 0x124f4: + /* Next insn is delay slot */ + pc = 0x1249c; + continue; + case 0x124fc: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r5 = r5 + 24412; + r6 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x12518; + pc = 0x42000; + run_42000(); + return; + case 0x12518: + /* Next insn is delay slot */ + pc = 0x1245c; + continue; + case 0x12520: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4 = 5 << 16; + r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r4 = r4 + 24488; + r5 = r0 + 1; + r6 = r0 + 75; + /* Next insn is delay slot */ + r31 = 0x12540; + pc = 0x43e00; + run_43e00(); + return; + case 0x12540: + /* Next insn is delay slot */ + pc = 0x1249c; + continue; + case 0x12548: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = readPages[(r28 + -31404) >>> 12][((r28 + -31404) >>> 2) & 0x3ff]; + r5 = r5 + 24564; + /* Next insn is delay slot */ + r31 = 0x12564; + pc = 0x42000; + run_42000(); + return; + case 0x12564: + /* Next insn is delay slot */ + pc = 0x1249c; + continue; + case 0x1256c: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r5 = r5 + 24296; + case 0x1257c: + r6 = 5 << 16; + r6 = r6 + 28248; + /* Next insn is delay slot */ + r31 = 0x1258c; + pc = 0x42000; + run_42000(); + return; + case 0x1258c: + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x12598; + pc = 0x40200; + run_40200(); + return; + case 0x12598: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r5 = r5 + 24248; + /* Next insn is delay slot */ + pc = 0x1257c; + continue; + case 0x125b0: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r5 = r5 + 24192; + /* Next insn is delay slot */ + pc = 0x1257c; + continue; + case 0x125c8: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r5 = r5 + 24148; + /* Next insn is delay slot */ + pc = 0x1257c; + continue; + case 0x125e0: + /* Next insn is delay slot */ + r31 = 0x125e8; + pc = 0x11000; + run_11000(); + return; + case 0x125e8: + case 0x12600: + pc = 0x12600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_12600() throws ExecutionException { /* 0x12600 - 0x12800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x12600: + r3 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r29 = r29 + -24; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x12628; + continue; } - r22 = r22 < 7 ? 1 : 0; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x12e18; - run_12e00(); return; + case 0x12618: + r5 = r5 + -1; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x12618; + continue; } - case 0x12ce4: - r2 = r16 < 256 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1319c; - run_13000(); return; + case 0x12628: + r5 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + r6 = r0 + 32; + r5 = r5 + -1; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r5; + r5 = r2 + 8; + /* Next insn is delay slot */ + r31 = 0x12644; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x12644: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x12800: + pc = 0x12800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_12800() throws ExecutionException { /* 0x12800 - 0x12a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x12800: + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x12a00: + pc = 0x12a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_12a00() throws ExecutionException { /* 0x12a00 - 0x12c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x12a00: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r17 = r4 + r0; + r16 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + if (r2 != r16) { + /* Next insn is delay slot */ + pc = 0x12a44; + continue; } - r5 = r0 + 82; - /* Next insn is delay slot */ - pc=0x12e2c; - run_12e00(); return; - case 0x12cfc: - r16 = r28 + -32460; - /* Next insn is delay slot */ - pc=0x12af0; - run_12a00(); return; - case 0x12d08: - r22 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x12a80; + continue; + case 0x12a30: + r16 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + if (r2 == r16) { + /* Next insn is delay slot */ + pc = 0x12a80; + continue; + } + case 0x12a44: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r4 = r16 + 8; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x12a5c; + return; + case 0x12a5c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x12a30; + continue; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x12a80: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x12c00: + pc = 0x12c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_12c00() throws ExecutionException { /* 0x12c00 - 0x12e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x12c00: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x12e00: + pc = 0x12e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_12e00() throws ExecutionException { /* 0x12e00 - 0x13000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x12e00: + r2 = readPages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff]; + r3 = r2 & 4; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x12e34; + continue; + } + r3 = r2 & 2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x12e2c; + continue; + } + r3 = r0 + -2; + r2 = r2 & r3; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r2; + case 0x12e2c: + /* Next insn is delay slot */ + pc = r31; + return; + case 0x12e34: + r3 = r0 + -4; + r2 = r2 & r3; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x13000: + pc = 0x13000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_13000() throws ExecutionException { /* 0x13000 - 0x13200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x13000: + /* Next insn is delay slot */ + pc = r31; + return; + case 0x13200: + pc = 0x13200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_13200() throws ExecutionException { /* 0x13200 - 0x13400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x13200: + r2 = r0 + -1; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x13400: + pc = 0x13400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_13400() throws ExecutionException { /* 0x13400 - 0x13600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x13400: + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x13600: + pc = 0x13600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_13600() throws ExecutionException { /* 0x13600 - 0x13800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x13600: + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x13800: + pc = 0x13800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_13800() throws ExecutionException { /* 0x13800 - 0x13a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x13800: + r29 = r29 + -24; + r2 = r4 + r0; + r4 = r5 + r0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r5 = r2 + r0; + r16 = r6 + r0; + r6 = r0 + 32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x13828; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x13828: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = r16 + r0; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r4 = r2 + r0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x12600; + run_12600(); + return; + case 0x13a00: + pc = 0x13a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_13a00() throws ExecutionException { /* 0x13a00 - 0x13c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x13a00: + r4 = 5 << 16; + r4 = r4 + 25220; + r5 = r6 + r0; + /* Next insn is delay slot */ + pc = 0x21a00; + run_21a00(); + return; + case 0x13c00: + pc = 0x13c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_13c00() throws ExecutionException { /* 0x13c00 - 0x13e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x13c00: + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r4 = r5 + r0; + r5 = r2 + 8; + /* Next insn is delay slot */ + pc = 0x1cc00; + run_1cc00(); + return; + case 0x13e00: + pc = 0x13e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_13e00() throws ExecutionException { /* 0x13e00 - 0x14000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x13e00: + r29 = r29 + -40; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r18 = r5 + r0; + r16 = r4 + r0; + r4 = r5 + r0; + r5 = r0 + 91; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + /* Next insn is delay slot */ + r31 = 0x13e30; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x13e30: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r17 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r16 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x13e94; + continue; + } + r5 = 5 << 16; + r5 = r5 + 20504; + r19 = 5 << 16; + /* Next insn is delay slot */ + pc = 0x13e60; + continue; + case 0x13e5c: + r5 = r19 + 25240; + case 0x13e60: + r4 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x13e6c; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x13e6c: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r4 = r16 + 8; + r2 = readPages[(r2 + 28) >>> 12][((r2 + 28) >>> 2) & 0x3ff]; + r5 = r18 + r0; + r17 = r17 + -1; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x13e88; + return; + case 0x13e88: + r16 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x13e5c; + continue; + } + case 0x13e94: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r18 + r0; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r5 = r0 + 93; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x1ca00; + run_1ca00(); + return; + case 0x14000: + pc = 0x14000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_14000() throws ExecutionException { /* 0x14000 - 0x14200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x14000: + r29 = r29 + -40; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + r17 = r4 + r0; + r4 = r0 + 40; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r5; + /* Next insn is delay slot */ + r31 = 0x14024; + pc = 0x20800; + run_20800(); + return; + case 0x14024: + r5 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r4 = r2 + 8; + r6 = r0 + 32; + r16 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x1403c; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x1403c: + r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r17; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r16; + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r16; + r2 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r2 + 1; + writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r2; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x14200: + pc = 0x14200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_14200() throws ExecutionException { /* 0x14200 - 0x14400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x14200: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r18 = r4 + r0; + r17 = r5 + r0; + if (r4 == r5) { + /* Next insn is delay slot */ + pc = 0x14270; + continue; + } + case 0x14224: + r16 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + if (r17 == r16) { + /* Next insn is delay slot */ + pc = 0x14254; + continue; + } + case 0x14234: + r5 = r16 + 8; + r4 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x14244; + pc = 0x14000; + run_14000(); + return; + case 0x14244: + r16 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r17 != r16) { + /* Next insn is delay slot */ + pc = 0x14234; + continue; + } + case 0x14254: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x14270: + r4 = 5 << 16; + r4 = r4 + 25244; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x14284; + pc = 0x21a00; + run_21a00(); + return; + case 0x14284: + /* Next insn is delay slot */ + pc = 0x14224; + continue; + case 0x14400: + pc = 0x14400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_14400() throws ExecutionException { /* 0x14400 - 0x14600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x14400: + r29 = r29 + -24; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r16 = r4 + r0; + r5 = r2 + r5; + addr = r5 + 8; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r4 = tmp; + /* Next insn is delay slot */ + r31 = 0x14424; + pc = 0x1dc00; + run_1dc00(); + return; + case 0x14424: + r3 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + r4 = r4 + -1; + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r4; + r3 = 6 << 16; + r3 = r3 + -26200; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; + r3 = r0 + 1; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x14600: + pc = 0x14600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_14600() throws ExecutionException { /* 0x14600 - 0x14800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x14600: + r29 = r29 + -24; + r2 = r4 + r0; + r4 = r5 + r0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r5 = r2 + r0; + r16 = r6 + r0; + r6 = r0 + 32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x14628; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x14628: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = r16 + r0; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r4 = r2 + r0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x14400; + run_14400(); + return; + case 0x14800: + pc = 0x14800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_14800() throws ExecutionException { /* 0x14800 - 0x14a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x14800: + r4 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r5 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r6 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + if (r6 == r2) { + /* Next insn is delay slot */ + pc = 0x14828; + continue; + } + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x14828: + r29 = r29 + -24; + r4 = r4 + 8; + r5 = r5 + 8; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x14840; + pc = 0x45400; + run_45400(); + return; + case 0x14840: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x14a00: + pc = 0x14a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_14a00() throws ExecutionException { /* 0x14a00 - 0x14c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x14a00: + r29 = r29 + -48; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; r16 = r0 + -1; - case 0x12d10: - /* Next insn is delay slot */ - r31=0x12d18; - pc=0x1c000; - run_1c000(); return; - case 0x12d18: - r2 = r2 & 255; - r3 = r19 + r2; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; + r17 = r0 + r0; + r18 = r0 + 46; + r19 = r0 + 48; + r21 = r0 + 49; + r20 = r0 + 35; + case 0x14a38: r16 = r16 + 1; - r3 = r3 & 32; - r2 = r2 | r3; - r3 = r2 + -48; - r4 = r2 << 24; - r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - r4 = r4 >> 24; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x13138; - run_13000(); return; + /* Next insn is delay slot */ + r31 = 0x14a44; + pc = 0x23400; + run_23400(); + return; + case 0x14a44: + if (r2 == r18) { + /* Next insn is delay slot */ + pc = 0x14aec; + continue; } - r2 = r2 + -97; - r2 = (r2&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x13154; - run_13000(); return; + case 0x14a4c: + r3 = r2 < 47 ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x14ac8; + continue; + } + if (r2 == r19) { + /* Next insn is delay slot */ + pc = 0x14aec; + continue; + } + if (r2 == r21) { + /* Next insn is delay slot */ + pc = 0x14ad0; + continue; + } + case 0x14a68: + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x14b74; + continue; + } + r18 = 6 << 16; + r18 = r18 + -10308; + r2 = readPages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff]; + r2 = r16 & r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x14b5c; + continue; + } + case 0x14a8c: + r2 = readPages[(r18 + 36) >>> 12][((r18 + 36) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x14af8; + continue; + } + r2 = r16 < 9 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x14af8; + continue; + } + r16 = r16 < 17 ? 1 : 0; + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x14b94; + continue; + } + r3 = 1 << 16; + r3 = r17 < r3 ? 1 : 0; + r3 = r3 << 2; + /* Next insn is delay slot */ + pc = 0x14afc; + continue; + case 0x14ac8: + if (r2 != r20) { + /* Next insn is delay slot */ + pc = 0x14a68; + continue; + } + case 0x14ad0: + r17 = r17 << 1; + r17 = r17 | 1; + r16 = r16 + 1; + /* Next insn is delay slot */ + r31 = 0x14ae4; + pc = 0x23400; + run_23400(); + return; + case 0x14ae4: + if (r2 != r18) { + /* Next insn is delay slot */ + pc = 0x14a4c; + continue; + } + case 0x14aec: + r17 = r17 << 1; + /* Next insn is delay slot */ + pc = 0x14a38; + continue; + case 0x14af8: + r3 = r0 + r0; + case 0x14afc: + r4 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r5 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r2 = r4 << 5; + r2 = r5 + r2; + r5 = 6 << 16; + r5 = r5 + -26200; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r5; + r5 = r0 + 1; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r5; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r17; + writePages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff] = r0; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r4 = r4 + 1; + r21 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r4; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x14b5c: + r4 = 5 << 16; + r4 = r4 + 25304; + /* Next insn is delay slot */ + r31 = 0x14b6c; + pc = 0x21800; + run_21800(); + return; + case 0x14b6c: + /* Next insn is delay slot */ + pc = 0x14a8c; + continue; + case 0x14b74: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 25268; + /* Next insn is delay slot */ + r31 = 0x14b88; + pc = 0x20600; + run_20600(); + return; + case 0x14b88: + r3 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x14afc; + continue; + case 0x14b94: + r3 = r17 < 256 ? 1 : 0; + r3 = r3 << 1; + /* Next insn is delay slot */ + pc = 0x14afc; + continue; + case 0x14c00: + pc = 0x14c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_14c00() throws ExecutionException { /* 0x14c00 - 0x14e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x14c00: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r17 = r0 + r0; + r16 = r0 + -1; + case 0x14c18: + /* Next insn is delay slot */ + r31 = 0x14c20; + pc = 0x23400; + run_23400(); + return; + case 0x14c20: + r3 = r2 & 255; + r4 = r3 + -48; + r4 = (r4 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + r16 = r16 + 1; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x14c64; + continue; + } + case 0x14c38: + r2 = r2 + -48; + r17 = r17 << 4; + r17 = r17 + r2; + /* Next insn is delay slot */ + r31 = 0x14c4c; + pc = 0x23400; + run_23400(); + return; + case 0x14c4c: + r3 = r2 & 255; + r4 = r3 + -48; + r4 = (r4 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + r16 = r16 + 1; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x14c38; + continue; + } + case 0x14c64: + r4 = r3 + -97; + r4 = (r4 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x14c88; + continue; + } + r17 = r17 << 4; + r17 = r2 + r17; + r17 = r17 + -87; + /* Next insn is delay slot */ + pc = 0x14c18; + continue; + case 0x14c88: + r3 = r3 + -65; + r3 = (r3 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x14cac; + continue; + } + r17 = r17 << 4; + r17 = r2 + r17; + r17 = r17 + -55; + /* Next insn is delay slot */ + pc = 0x14c18; + continue; + case 0x14cac: + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x14d48; + continue; + } + r2 = 6 << 16; + r2 = readPages[(r2 + -10272) >>> 12][((r2 + -10272) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x14cf4; + continue; } r2 = r16 < 3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x12d80; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x14cf4; continue; } r16 = r16 < 5 ? 1 : 0; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x13320; - run_13200(); return; + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x14d68; + continue; } - r2 = 1 << 16; - r2 = r22 < r2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14264; - run_14200(); return; - } - case 0x12d80: - r5 = r0 + 80; - case 0x12d84: - r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r4 = r3 << 5; - r2 = r3 << 3; - r2 = r4 - r2; - r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r3 + 1; - r2 = r4 + r2; - writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r3; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r5; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r22; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x12c58; + r3 = 1 << 16; + r3 = r17 < r3 ? 1 : 0; + r3 = r3 << 2; + /* Next insn is delay slot */ + pc = 0x14cf8; continue; - case 0x12dbc: - r30 = r0 + -1; - r16 = r0 + r0; - r22 = r0 + 46; - case 0x12dc8: - r30 = r30 + 1; - /* Next insn is delay slot */ - r31=0x12dd4; - pc=0x1c000; - run_1c000(); return; - case 0x12dd4: - if(r2 == r22) { - /* Next insn is delay slot */ - pc=0x13190; - run_13000(); return; - } - case 0x12ddc: - r4 = r2 < 47 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x13168; - run_13000(); return; - } - r4 = r0 + 48; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x13190; - run_13000(); return; - } - r5 = r0 + 49; - if(r2 == r5) { - /* Next insn is delay slot */ - pc=0x13174; - run_13000(); return; - } - case 0x12e00: - pc=0x12e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_12e00() throws ExecutionException { /* 0x12e00 - 0x13000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x12e00: - r2 = r30 < 9 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1319c; - run_13000(); return; - } - r3 = r30 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x12ce4; - run_12c00(); return; - } - case 0x12e18: - r2 = 1 << 16; - r2 = r16 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1319c; - run_13000(); return; - } - r5 = r0 + 84; - case 0x12e2c: - r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r4 = r3 << 5; - r2 = r3 << 3; - r2 = r4 - r2; - r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r3 + 1; - r2 = r4 + r2; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r5; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r16; - writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r3; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x12c58; - run_12c00(); return; - case 0x12e64: - /* Next insn is delay slot */ - r31=0x12e6c; - pc=0x1c600; - run_1c600(); return; - case 0x12e6c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x12c58; - run_12c00(); return; - } - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 == r22) { - /* Next insn is delay slot */ - pc=0x143f8; - run_14200(); return; - } - /* Next insn is delay slot */ - r31=0x12e8c; - pc=0x18c00; - run_18c00(); return; - case 0x12e8c: - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x12e98; - pc=0x1c600; - run_1c600(); return; - case 0x12e98: - if(r2 == r22) { - /* Next insn is delay slot */ - pc=0x1471c; - run_14600(); return; - } - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x143d8; - run_14200(); return; - } - case 0x12eb0: - r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r4 = r3 << 5; - r2 = r3 << 3; - r2 = r4 - r2; - r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r4 + r2; - r4 = r0 + 88; - case 0x12ed4: - r3 = r3 + 1; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r4; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r16; - writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r3; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x12c58; - run_12c00(); return; - case 0x12ef0: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = r0 + r0; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - r22 = r0 + 43; - r16 = r0 + 43; - /* Next insn is delay slot */ - pc=0x12f3c; - continue; - case 0x12f0c: - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r2 + 1; - r2 = r3 + r2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r22&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x12f28; - pc=0x1c000; - run_1c000(); return; - case 0x12f28: - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x12f84; - continue; - } - case 0x12f30: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - case 0x12f3c: - r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x12f0c; - continue; - } - /* Next insn is delay slot */ - r31=0x12f54; - pc=0x17800; - run_17800(); return; - case 0x12f54: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r2 + 1; - r2 = r3 + r2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r22&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x12f7c; - pc=0x1c000; - run_1c000(); return; - case 0x12f7c: - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x12f30; - continue; - } - case 0x12f84: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r4 = r0 + r0; - r16 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x12f98; - pc=0x30800; - run_30800(); return; - case 0x12f98: - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r5 = r0 + r0; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x12fb0; - pc=0x12200; - run_12200(); return; - case 0x12fb0: - /* Next insn is delay slot */ - pc=0x12c58; - run_12c00(); return; - case 0x12fb8: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = r0 + r0; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - r16 = r0 + r0; - r30 = r0 + 45; - r22 = r0 + 45; - /* Next insn is delay slot */ - pc=0x1300c; - run_13000(); return; - case 0x12fd8: - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r2 + 1; - r2 = r3 + r2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r30&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r16 = r16 ^ 1; - /* Next insn is delay slot */ - r31=0x12ff8; - pc=0x1c000; - run_1c000(); return; - case 0x12ff8: - if(r2 != r22) { - /* Next insn is delay slot */ - pc=0x1257c; - run_12400(); return; - } - case 0x13000: - pc=0x13000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_13000() throws ExecutionException { /* 0x13000 - 0x13200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x13000: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - case 0x1300c: - r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x12fd8; - run_12e00(); return; - } - /* Next insn is delay slot */ - r31=0x13024; - pc=0x17800; - run_17800(); return; - case 0x13024: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x12fd8; - run_12e00(); return; - case 0x13038: - r3 = r3 & 255; - r3 = r19 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x14394; - run_14200(); return; - } - r16 = r28 + -30776; - /* Next insn is delay slot */ - pc=0x127d4; - run_12600(); return; - case 0x1305c: - r4 = 7 << 16; - r4 = r4 + -8976; - /* Next insn is delay slot */ - r31=0x1306c; - pc=0x1ae00; - run_1ae00(); return; - case 0x1306c: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1427c; - run_14200(); return; - } - case 0x130ac: - r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r2 = r8 ^ r2; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - r8 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - r2 = r8 + r2; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; - case 0x130d4: - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r2 = r22 << 2; - r2 = r2 + -8; - r16 = r16 + r2; - r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - case 0x130f0: - r5 = r5 & 103; - r5 = r5 | r7; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r5; - r7 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r4 = r0 + -17; - r4 = r7 | r4; - r5 = r5 & r4; - r4 = r0 + -9; - r5 = r5 & r4; - r6 = r6 + -1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r5; - writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r6; - case 0x13120: - writePages[(r28+-30808)>>>12][((r28+-30808)>>>2)&0x3ff] = r0; - case 0x13124: - r22 = r22 + -1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r30; - writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r22; - /* Next insn is delay slot */ - pc=0x125d8; - run_12400(); return; - case 0x13138: - r2 = r2 + -97; - r22 = r22 << 4; - r3 = r4 + -48; - r2 = (r2&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; - r22 = r22 + r3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x12d10; - run_12c00(); return; - } - case 0x13154: - r22 = r22 << 4; - r22 = r4 + r22; - r22 = r22 + -87; - /* Next insn is delay slot */ - pc=0x12d10; - run_12c00(); return; - case 0x13168: - r3 = r0 + 35; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x12e00; - run_12e00(); return; - } - case 0x13174: - r16 = r16 << 1; - r16 = r16 | 1; - r30 = r30 + 1; - /* Next insn is delay slot */ - r31=0x13188; - pc=0x1c000; - run_1c000(); return; - case 0x13188: - if(r2 != r22) { - /* Next insn is delay slot */ - pc=0x12ddc; - run_12c00(); return; - } - case 0x13190: - r16 = r16 << 1; - /* Next insn is delay slot */ - pc=0x12dc8; - run_12c00(); return; - case 0x1319c: - r5 = r0 + 80; - /* Next insn is delay slot */ - pc=0x12e2c; - run_12e00(); return; - case 0x131a8: - r16 = r28 + -32508; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x131b4: - r2 = r3 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x13244; - run_13200(); return; - } - r2 = r3 & 32; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x12768; - run_12600(); return; - } - r2 = readPages[(r21+8)>>>12][((r21+8)>>>2)&0x3ff]; - r2 = r2 + 128; - r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x12768; - run_12600(); return; - } - r3 = r3 | 8; - writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x12768; - run_12600(); return; - case 0x131f4: - r3 = r0 + -2; - r2 = r2 & r3; - writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r2; - case 0x13200: - pc=0x13200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_13200() throws ExecutionException { /* 0x13200 - 0x13400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x13200: - r3 = r2 + r0; - /* Next insn is delay slot */ - pc=0x12928; - run_12800(); return; - case 0x1320c: - /* Next insn is delay slot */ - r31=0x13214; - pc=0x1ec00; - run_1ec00(); return; - case 0x13214: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x12890; - run_12800(); return; - } - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; + case 0x14cf4: + r3 = r0 + r0; + case 0x14cf8: + r4 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r5 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r2 = r4 << 5; + r2 = r5 + r2; + r5 = 6 << 16; + r5 = r5 + -26200; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r5; r5 = r0 + 1; - r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r6 = r6 + -1; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1323c; - pc=0x12200; - run_12200(); return; - case 0x1323c: - /* Next insn is delay slot */ - pc=0x12c58; - run_12c00(); return; - case 0x13244: - writePages[(r21+8)>>>12][((r21+8)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x12768; - run_12600(); return; - case 0x13250: - writePages[(r21+12)>>>12][((r21+12)>>>2)&0x3ff] = r0; - writePages[(r21+8)>>>12][((r21+8)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x12768; - run_12600(); return; - case 0x13260: - r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - r5 = r5 + -9164; - /* Next insn is delay slot */ - r31=0x13278; - pc=0x17e00; - run_17e00(); return; - case 0x13278: - r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1443c; - run_14400(); return; - } - r2 = r0 + 1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - case 0x13298: - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x132a4; - pc=0x17c00; - run_17c00(); return; - case 0x132a4: - r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x12c20; - run_12c00(); return; - case 0x132b0: - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r3 = r0 + 110; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r4 = r4 | 32; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x14474; - run_14400(); return; - } - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r3 = r0 + 111; - r4 = r4 | 32; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x14474; - run_14400(); return; - } - addr=r2+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 116; - r3 = r3 | 32; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x14474; - run_14400(); return; - } - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r3 = r28 + -32660; - r2 = r22 + 1; - writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r22 = r22 << 2; - r2 = r2 + r22; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - case 0x13314: - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x125d8; - run_12400(); return; - case 0x13320: - r2 = r22 < 256 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x12d80; - run_12c00(); return; - } - r5 = r0 + 82; - /* Next insn is delay slot */ - pc=0x12d84; - run_12c00(); return; - case 0x13338: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x13348; - pc=0x17c00; - run_17c00(); return; - case 0x13348: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r6 = r6 + -1; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x13368; - pc=0x12200; - run_12200(); return; - case 0x13368: - /* Next insn is delay slot */ - pc=0x12c58; - run_12c00(); return; - case 0x13370: - r16 = r22 & 15; - /* Next insn is delay slot */ - r31=0x1337c; - pc=0x1c000; - run_1c000(); return; - case 0x1337c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x13478; - run_13400(); return; - } - r2 = r0 + 98; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x15480; - run_15400(); return; - } - r2 = r0 + 120; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x13478; - run_13400(); return; - } - r16 = r0 + r0; - r22 = r0 + -1; - case 0x133a8: - /* Next insn is delay slot */ - r31=0x133b0; - pc=0x1c000; - run_1c000(); return; - case 0x133b0: - r2 = r2 & 255; - r3 = r19 + r2; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r22 = r22 + 1; - r3 = r3 & 32; - r2 = r2 | r3; - r4 = r2 + -48; - r3 = r2 << 24; - r4 = (r4&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - r3 = r3 >> 24; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x146ec; - run_14600(); return; - } - r2 = r2 + -97; - r2 = (r2&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14708; - run_14600(); return; - } - r2 = r22 < 3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15474; - run_15400(); return; - } - r22 = r22 < 5 ? 1 : 0; - case 0x13400: - pc=0x13400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_13400() throws ExecutionException { /* 0x13400 - 0x13600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x13400: - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x15590; - run_15400(); return; - } - r2 = 1 << 16; - r2 = r16 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x15474; - run_15400(); return; - } - r2 = r0 + 84; - case 0x1341c: - r4 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r5 = r4 << 5; - r3 = r4 << 3; - r3 = r5 - r3; - r5 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r5; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r17; + writePages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff] = r0; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r4 = r4 + 1; - r3 = r5 + r3; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r16; - writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r4; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x12c58; - run_12c00(); return; - case 0x13454: - r3 = r16 << 1; - r16 = r16 << 3; - r16 = r3 + r16; - r2 = r2 & 15; - r16 = r16 + r2; - /* Next insn is delay slot */ - r31=0x13470; - pc=0x1c000; - run_1c000(); return; - case 0x13470: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - case 0x13478: - r2 = r3 & 255; - r4 = r2 + -48; - r4 = (r4&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x13454; - continue; - } - r2 = r0 + 46; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x15278; - run_15200(); return; - } - r3 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r4 = r3 << 5; - r2 = r3 << 3; - r2 = r4 - r2; - r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r4 + r2; - r4 = r0 + 80; - /* Next insn is delay slot */ - pc=0x12ed4; - run_12e00(); return; - case 0x134c4: - r16 = r28 + -32572; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x134d0: - r16 = r28 + -32516; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x134dc: - /* Next insn is delay slot */ - r31=0x134e4; - pc=0x1c000; - run_1c000(); return; - case 0x134e4: - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x14270; - run_14200(); return; - } - r16 = r28 + -32580; - /* Next insn is delay slot */ - pc=0x127d4; - run_12600(); return; - case 0x134f8: - r16 = r28 + -32532; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x13504: - r22 = r3 + 1; - r3 = r28 + -30776; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - r2 = r0 + 2; - writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r22; - writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x124a4; - run_12400(); return; - case 0x13524: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15124; - run_15000(); return; - } - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - r2 = r8 < r2 ? 1 : 0; - r2 = r2 ^ 1; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x13588: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14bd0; - run_14a00(); return; - } - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - r2 = r8 < r2 ? 1 : 0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x135e8: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - case 0x13600: - pc=0x13600; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r4; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_13600() throws ExecutionException { /* 0x13600 - 0x13800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x13600: - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14c4c; - run_14c00(); return; - } - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - r2 = r2 < r8 ? 1 : 0; - r2 = r2 ^ 1; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x1364c: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14890; - run_14800(); return; - } - r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r2 = r8 ^ r2; - r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - case 0x136a4: - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x136b4: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1503c; - run_15000(); return; - } - r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r2 = r8 - r2; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - case 0x13708: - r8 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - r2 = r8 - r2; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x13728: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14a60; - run_14a00(); return; - } - r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r2 = r8 + r2; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - case 0x1377c: - r8 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - r2 = r8 + r2; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x1379c: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 3; - r5 = r6 << 5; - r5 = r5 - r4; - r4 = r5 + -24; - r4 = r3 + r4; - r7 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r8 = r7 & 256; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x144b4; - run_14400(); return; - } - r8 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - case 0x137d0: - r5 = r5 + -48; - r3 = r3 + r5; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r5 = r7 & 256; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x147a4; - run_14600(); return; - } - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r8 = r2 << (r8&0x1f); - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r8; - case 0x137fc: - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - case 0x13800: - pc=0x13800; + case 0x14d48: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 25352; + /* Next insn is delay slot */ + r31 = 0x14d5c; + pc = 0x20600; + run_20600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_13800() throws ExecutionException { /* 0x13800 - 0x13a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x13800: - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x13810: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14f40; - run_14e00(); return; - } - r2 = r0 + 2; - case 0x13854: - r8 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r9 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - r8 = r9 >>> (r8&0x1f); - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x13870: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r4 = r2 + r4; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = r5 & 256; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x14520; - run_14400(); return; - } - r8 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - case 0x138a4: - r3 = r3 + -48; - r3 = r2 + r3; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x14500; - run_14400(); return; - } - r2 = r0 + 1; - r8 = r2 << (r8&0x1f); - f0 = r8; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - { long l = Double.doubleToLongBits(((double)f0)); f3 = (int)(l >>> 32); f2 = (int)l; } - f0 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = r0 + 2; - f1 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x138f8: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x150b0; - run_15000(); return; - } - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - { long hilo = (r8) * r2; hi = (int) (hilo >>> 32); lo = (int) hilo; } - r2 = lo; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x1395c: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 3; - r7 = r6 << 5; - r7 = r7 - r4; - r4 = r7 + -24; - r7 = r7 + -48; - r4 = r3 + r4; - r3 = r3 + r7; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r8 = r7 | r5; - r8 = r8 & 256; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x14cc8; - run_14c00(); return; - } - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x15204; - run_15200(); return; - } - r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r9 = r0 + 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x139e8; - continue; - } - case 0x139bc: - r10 = r2 & 1; - { long hilo = (r9) * r8; hi = (int) (hilo >>> 32); lo = (int) hilo; } - if(r10 == r0) { - /* Next insn is delay slot */ - pc=0x139d0; - continue; - } - r9 = lo; - case 0x139d0: - r2 = r2 >> 1; - { long hilo = (r8) * r8; hi = (int) (hilo >>> 32); lo = (int) hilo; } - r8 = lo; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x139bc; - continue; - } - case 0x139e8: - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r9; - r2 = r0 + 2; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x139fc: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - case 0x13a00: - pc=0x13a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_13a00() throws ExecutionException { /* 0x13a00 - 0x13c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x13a00: - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r2 << 3; - r6 = r2 << 5; - r6 = r6 - r4; - r4 = r6 + -24; - r6 = r6 + -48; - r4 = r3 + r4; - r3 = r3 + r6; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r6 = r7 | r5; - r6 = r6 & 256; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x14e6c; - run_14e00(); return; - } - case 0x13a3c: - r6 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x14418; - run_14400(); return; - } - r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - if(r6 != r0) { - /* Next insn is delay slot */ - hi = r8%r6; lo = r8/r6; - pc=0x13a60; - continue; - } - hi = r8%r6; lo = r8/r6; - throw new ExecutionException("Break"); - case 0x13a60: - r6 = lo; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r6; - r6 = r2 + r0; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x13a78: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r2 << 3; - r6 = r2 << 5; - r6 = r6 - r4; - r4 = r6 + -24; - r6 = r6 + -48; - r4 = r3 + r4; - r3 = r3 + r6; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r6 = r7 | r5; - r6 = r6 & 256; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x13a3c; - continue; - } - r6 = r7 & 256; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x13ae0; - continue; - } - f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 | 256; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - case 0x13ae0: - r6 = r5 & 256; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x153a8; - run_15200(); return; - } - f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 | 256; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - case 0x13b04: - f2 = r0; - f3 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x152ec; - run_15200(); return; - } - f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r6 = r2 + r0; - f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r2 = r0 + 2; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x13b50: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r6 << 3; - r7 = r6 << 5; - r7 = r7 - r3; - r4 = r7 + -24; - r3 = r7 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r8 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r9 = r8 | r5; - r9 = r9 & 256; - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x14910; - run_14800(); return; - } - case 0x13b90: - r8 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x1456c; - run_14400(); return; - } - r3 = r7 + -48; - r3 = r2 + r3; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r8 != r0) { - /* Next insn is delay slot */ - hi = r2%r8; lo = r2/r8; - pc=0x13bbc; - continue; - } - hi = r2%r8; lo = r2/r8; - throw new ExecutionException("Break"); - case 0x13bbc: - r7 = hi; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r7; - case 0x13bc4: - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x130d4; - run_13000(); return; - case 0x13bd4: - r4 = 7 << 16; - r4 = r4 + -9064; - /* Next insn is delay slot */ - r31=0x13be4; - pc=0x1b000; - run_1b000(); return; - case 0x13be4: - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r2 = r22 << 2; - r2 = r2 + -8; - r16 = r16 + r2; - r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - case 0x13c00: - pc=0x13c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_13c00() throws ExecutionException { /* 0x13c00 - 0x13e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x13c00: - /* Next insn is delay slot */ - pc=0x13120; - run_13000(); return; - case 0x13c08: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r2 = r3 + r2; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r3 & 256; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x1458c; - run_14400(); return; - } - r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = r4 >> 16; - /* Next insn is delay slot */ - pc=0x140e4; - run_14000(); return; - case 0x13c50: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14d70; - run_14c00(); return; - } - r2 = r0 + 2; - case 0x13c94: - r9 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r8 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r8 = r9 & r8; - case 0x13ca4: - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r8; - r9 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r8 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - r8 = r9 + r8; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x13cc4: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14804; - run_14800(); return; - } - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - r2 = r8 ^ r2; - r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x13d28: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r2 = r3 + r2; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r3 & 256; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x14678; - run_14600(); return; - } - r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = r4 >> 8; - /* Next insn is delay slot */ - pc=0x140e4; - run_14000(); return; - case 0x13d70: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x149e4; - run_14800(); return; - } - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r8 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - r2 = r2 < r8 ? 1 : 0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x13dd0: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r2 = r3 + r2; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r3 & 256; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x14740; - run_14600(); return; - } - case 0x13e00: - pc=0x13e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_13e00() throws ExecutionException { /* 0x13e00 - 0x14000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x13e00: - f0 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r3 = r3 | 256; - { long l = Double.doubleToLongBits(((double)f0)); f13 = (int)(l >>> 32); f12 = (int)l; } - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - case 0x13e14: - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x13e20; - pc=0x32e00; - run_32e00(); return; - case 0x13e20: - r2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = f0; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = f1; - case 0x13e30: - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x13120; - run_13000(); return; - case 0x13e40: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r2 = r3 + r2; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r3 & 256; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x1472c; - run_14600(); return; - } - f2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r3 = r3 | 256; - { long l = Double.doubleToLongBits(((double)f2)); f13 = (int)(l >>> 32); f12 = (int)l; } - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - case 0x13e84: - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x13e90; - pc=0x32800; - run_32800(); return; - case 0x13e90: - /* Next insn is delay slot */ - pc=0x13e20; + case 0x14d5c: + r3 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x14cf8; continue; - case 0x13e98: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r2 = r3 + r2; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r3 & 256; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x146c4; - run_14600(); return; - } - f0 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r3 = r3 | 256; - { long l = Double.doubleToLongBits(((double)f0)); f13 = (int)(l >>> 32); f12 = (int)l; } - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - case 0x13edc: - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x13ee8; - pc=0x32c00; - run_32c00(); return; - case 0x13ee8: - /* Next insn is delay slot */ - pc=0x13e20; + case 0x14d68: + r3 = r17 < 256 ? 1 : 0; + r3 = r3 << 1; + /* Next insn is delay slot */ + pc = 0x14cf8; continue; - case 0x13ef0: - r5 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r2 = r0 + 128; - writePages[(r28+-30808)>>>12][((r28+-30808)>>>2)&0x3ff] = r2; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x14770; - run_14600(); return; - } - r2 = r0 + 17; - if(r5 != r2) { - /* Next insn is delay slot */ - pc=0x14754; - run_14600(); return; - } - r22 = r22 + -2; - r2 = r0 + 1; - writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r22; - writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x124a4; - run_12400(); return; - case 0x13f28: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r2 = r3 + r2; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r3 & 256; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x13e30; - continue; - } - f0 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r4 = r0 + -257; - f1 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r3 = r3 & r4; - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r6; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = f2; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x13120; - run_13000(); return; - case 0x13fac: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r3 + r2; - r3 = r0 + 1; - writePages[(r2+-8)>>>12][((r2+-8)>>>2)&0x3ff] = r3; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x13120; - run_13000(); return; - case 0x13fe0: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r2 = r3 + r2; - case 0x14000: - pc=0x14000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_14000() throws ExecutionException { /* 0x14000 - 0x14200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x14000: - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r3 & 256; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1461c; - run_14600(); return; - } - r5 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = 32768 << 16; - r4 = r5 ^ r4; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; - case 0x14024: - r4 = r0 + -9; - r3 = r3 & r4; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r3 = r0 - r3; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x13120; - run_13000(); return; - case 0x1404c: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r2 = r3 + r2; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r3 & 256; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x145d8; - run_14400(); return; - } - r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - case 0x14088: - r4 = ~(r0 | r4); - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; - r4 = r0 + -9; - r3 = r3 & r4; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x13120; - run_13000(); return; - case 0x140a8: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r2 = r3 + r2; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r3 & 256; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x14634; - run_14600(); return; - } - r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - case 0x140e4: - r4 = r4 & 255; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; - r3 = r3 | 8; - r4 = r0 + -8; - r3 = r3 & r4; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x13120; - run_13000(); return; - case 0x1410c: - r4 = 3 << 16; - r4 = r4 + 12288; - /* Next insn is delay slot */ - r31=0x1411c; - pc=0x12000; - run_12000(); return; - case 0x1411c: - /* Next insn is delay slot */ - pc=0x13be4; - run_13a00(); return; - case 0x14124: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r2 << 3; - r2 = r2 << 5; - r2 = r2 - r3; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r2 = r3 + r2; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r3 & 256; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x13e30; - run_13e00(); return; - } - f2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r3 = r3 | 256; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = f0; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = f1; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x13120; - run_13000(); return; - case 0x14180: - r22 = r22 + -1; - r2 = r0 + 5; - writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r22; - writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x1275c; - run_12600(); return; - case 0x14198: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r4 = r6 << 5; - r3 = r6 << 3; - r3 = r4 - r3; - r4 = r3 + -24; - r3 = r3 + -48; - r4 = r2 + r4; - r3 = r2 + r3; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r7 | r5; - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14ad4; - run_14a00(); return; - } - r2 = r0 + 2; - case 0x141dc: - r9 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r8 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r8 = r9 | r8; - /* Next insn is delay slot */ - pc=0x13ca4; - run_13c00(); return; - case 0x141f4: - r2 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r3 = r2 << 3; - case 0x14200: - pc=0x14200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_14200() throws ExecutionException { /* 0x14200 - 0x14400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x14200: - r2 = r2 << 5; - r2 = r2 - r3; - r3 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r2 = r2 + -24; - r2 = r3 + r2; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r3 & 256; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x146d8; - run_14600(); return; - } - f2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r3 = r3 | 256; - { long l = Double.doubleToLongBits(((double)f2)); f13 = (int)(l >>> 32); f12 = (int)l; } - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - case 0x14238: - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x14244; - pc=0x32400; - run_32400(); return; - case 0x14244: - /* Next insn is delay slot */ - pc=0x13e20; - run_13e00(); return; - case 0x1424c: - r4 = 3 << 16; - r4 = r4 + 12800; - /* Next insn is delay slot */ - r31=0x1425c; - pc=0x12000; - run_12000(); return; - case 0x1425c: - /* Next insn is delay slot */ - pc=0x13be4; - run_13a00(); return; - case 0x14264: - r5 = r0 + 84; - /* Next insn is delay slot */ - pc=0x12d84; - run_12c00(); return; - case 0x14270: - r16 = r28 + -32588; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x1427c: - r2 = r7 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x142cc; - continue; - } - f0 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f1 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 & r2; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - r8 = fcsr; - r8 = fcsr; - r1 = r8 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r8; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f2; - case 0x142cc: - r2 = r5 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x14318; - continue; - } - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 & r2; - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r6; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - case 0x14318: - r4 = 7 << 16; - r4 = r4 + -9024; - /* Next insn is delay slot */ - r31=0x14328; - pc=0x1ae00; - run_1ae00(); return; - case 0x14328: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r6 << 3; - r4 = r6 << 5; - r4 = r4 - r3; - r3 = r4 + -48; - r4 = r4 + -24; - r3 = r2 + r3; - r4 = r2 + r4; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x130ac; - run_13000(); return; - case 0x1435c: - r4 = 7 << 16; - r4 = r4 + -8936; - /* Next insn is delay slot */ - r31=0x1436c; - pc=0x1b800; - run_1b800(); return; - case 0x1436c: - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x125d8; - run_12400(); return; - case 0x14378: - r4 = 7 << 16; - r4 = r4 + -9140; - /* Next insn is delay slot */ - r31=0x14388; - pc=0x1ae00; - run_1ae00(); return; - case 0x14388: - r16 = r28 + -32500; - /* Next insn is delay slot */ - pc=0x127cc; - run_12600(); return; - case 0x14394: - /* Next insn is delay slot */ - r31=0x1439c; - pc=0x1f400; - run_1f400(); return; - case 0x1439c: - r4 = readPages[(r28+-30816)>>>12][((r28+-30816)>>>2)&0x3ff]; - r6 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x143b0; - pc=0x31000; - run_31000(); return; - case 0x143b0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x14780; - run_14600(); return; - } - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x127d4; - run_12600(); return; - case 0x143c4: - /* Next insn is delay slot */ - r31=0x143cc; - pc=0x1c000; - run_1c000(); return; - case 0x143cc: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x1258c; - run_12400(); return; - case 0x143d8: - r4 = 7 << 16; - r4 = r4 + -9200; - /* Next insn is delay slot */ - r31=0x143e8; - pc=0x1b000; - run_1b000(); return; - case 0x143e8: - /* Next insn is delay slot */ - r31=0x143f0; - pc=0x1c800; - run_1c800(); return; - case 0x143f0: - /* Next insn is delay slot */ - pc=0x12eb0; - run_12e00(); return; - case 0x143f8: - r4 = 7 << 16; - r4 = r4 + -6844; - case 0x14400: - pc=0x14400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_14400() throws ExecutionException { /* 0x14400 - 0x14600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x14400: - /* Next insn is delay slot */ - r31=0x14408; - pc=0x1b000; - run_1b000(); return; - case 0x14408: - /* Next insn is delay slot */ - r31=0x14410; - pc=0x1c800; - run_1c800(); return; - case 0x14410: - /* Next insn is delay slot */ - pc=0x12c58; - run_12c00(); return; - case 0x14418: - r6 = r5 & 16; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x151a0; - run_15000(); return; - } - r6 = r2 + r0; - case 0x14428: - r2 = r0 + 2; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r0; - case 0x14430: - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x1443c: - r4 = 7 << 16; - r4 = r4 + -9228; - r5 = r0 + -1; - /* Next insn is delay slot */ - r31=0x14450; - pc=0x1b800; - run_1b800(); return; - case 0x14450: - r4 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x13298; - run_13200(); return; - case 0x1445c: - /* Next insn is delay slot */ - r31=0x14464; - pc=0x1ec00; - run_1ec00(); return; - case 0x14464: - r3 = r0 + 3; - r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x132b0; - run_13200(); return; - } - case 0x14474: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 40; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x15420; - run_15400(); return; - } - r6 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; - r4 = r0 + r0; - r5 = r0 + r0; - r6 = r6 + -1; - /* Next insn is delay slot */ - r31=0x1449c; - pc=0x12200; - run_12200(); return; - case 0x1449c: - /* Next insn is delay slot */ - pc=0x12c58; - run_12c00(); return; - case 0x144a4: - r16 = r0 + r0; - r5 = r0 + 80; - /* Next insn is delay slot */ - pc=0x12e2c; - run_12e00(); return; - case 0x144b4: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - r9 = r0 + -257; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r7 = r7 & r9; - r10 = fcsr; - r10 = fcsr; - r1 = r10 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r10; - r8 = f2; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - pc=0x137d0; - run_13600(); return; - case 0x14500: - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x15318; - run_15200(); return; - } - r2 = r2 >> (r8&0x1f); - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x136a4; - run_13600(); return; - case 0x14520: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - r7 = r0 + -257; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 & r7; - r10 = fcsr; - r10 = fcsr; - r1 = r10 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r10; - r8 = f2; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x138a4; - run_13800(); return; - case 0x1456c: - r3 = r5 & 16; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x15220; - run_15200(); return; - } - case 0x14578: - r3 = r7 + -48; - r3 = r2 + r3; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x13bc4; - run_13a00(); return; - case 0x1458c: - f0 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r4 = r0 + -257; - f1 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r3 = r3 & r4; - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r6; - r4 = f2; - r4 = r4 >> 16; - /* Next insn is delay slot */ - pc=0x140e4; - run_14000(); return; - case 0x145d8: - f0 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r4 = r0 + -257; - f1 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r3 = r3 & r4; - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; - r1 = r1 ^ 2; - fcsr = r1; - case 0x14600: - pc=0x14600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_14600() throws ExecutionException { /* 0x14600 - 0x14800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x14600: - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r6; - r4 = f2; - /* Next insn is delay slot */ - pc=0x14088; - run_14000(); return; - case 0x1461c: - r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = r0 - r4; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x14024; - run_14000(); return; - case 0x14634: - f0 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r4 = r0 + -257; - f1 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r3 = r3 & r4; - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r6; - r4 = f2; - /* Next insn is delay slot */ - pc=0x140e4; - run_14000(); return; - case 0x14678: - f0 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r4 = r0 + -257; - f1 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r3 = r3 & r4; - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r6; - r4 = f2; - r4 = r4 >> 8; - /* Next insn is delay slot */ - pc=0x140e4; - run_14000(); return; - case 0x146c4: - f12 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - f13 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x13edc; - run_13e00(); return; - case 0x146d8: - f12 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - f13 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x14238; - run_14200(); return; - case 0x146ec: - r2 = r2 + -97; - r16 = r16 << 4; - r4 = r3 + -48; - r2 = (r2&0xffffffffL) < (6&0xffffffffL) ? 1 : 0; - r16 = r16 + r4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x133a8; - run_13200(); return; - } - case 0x14708: - r16 = r16 << 4; - r3 = r3 + r16; - r16 = r3 + -87; - /* Next insn is delay slot */ - pc=0x133a8; - run_13200(); return; - case 0x1471c: - /* Next insn is delay slot */ - r31=0x14724; - pc=0x1c000; - run_1c000(); return; - case 0x14724: - /* Next insn is delay slot */ - pc=0x12eb0; - run_12e00(); return; - case 0x1472c: - f12 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - f13 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x13e84; - run_13e00(); return; - case 0x14740: - f12 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - f13 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x13e14; - run_13e00(); return; - case 0x14754: - r4 = 7 << 16; - r4 = r4 + -9084; - /* Next insn is delay slot */ - r31=0x14764; - pc=0x1b800; - run_1b800(); return; - case 0x14764: - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x125d8; - run_12400(); return; - case 0x14770: - r20 = r20 + 1; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x13124; - run_13000(); return; - case 0x14780: - r4 = 7 << 16; - r4 = r4 + -9104; - /* Next insn is delay slot */ - r31=0x14790; - pc=0x1b000; - run_1b000(); return; - case 0x14790: - r2 = r0 + 4; - writePages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff] = r2; - r2 = r0 + 4; - /* Next insn is delay slot */ - pc=0x1275c; - run_12600(); return; - case 0x147a4: - f12 = readPages[(r28+-32380)>>>12][((r28+-32380)>>>2)&0x3ff]; - f24 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - f0 = r8; - f13 = readPages[(r28+-32384)>>>12][((r28+-32384)>>>2)&0x3ff]; - f25 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits(((double)f0)); f15 = (int)(l >>> 32); f14 = (int)l; } - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r2; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r3; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r4; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x147d4; - pc=0x33400; - run_33400(); return; - case 0x147d4: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - r2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r4 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r30 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r6 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x137fc; - run_13600(); return; - case 0x14800: - pc=0x14800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_14800() throws ExecutionException { /* 0x14800 - 0x14a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x14800: - case 0x14804: - r2 = r7 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1482c; - continue; - } - f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 | 256; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - case 0x1482c: - r2 = r5 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15330; - run_15200(); return; - } - f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 | 256; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; - case 0x14854: - f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 & r2; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - r2 = r0 + 1; - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x14904; - continue; - } - case 0x14878: - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r2 = r0 + 2; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x14890: - r2 = r7 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x148b8; - continue; - } - f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 | 256; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - case 0x148b8: - r2 = r5 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x153f8; - run_15200(); return; - } - f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 | 256; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; - case 0x148e0: - f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 & r2; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - r2 = r0 + 1; - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x14878; - continue; - } - case 0x14904: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x14878; - continue; - case 0x14910: - r2 = r8 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x14960; - continue; - } - f0 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f1 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r8 = r8 & r2; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r8; - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r6; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f2; - case 0x14960: - r2 = r5 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x149ac; - continue; - } - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 & r2; - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r6; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - case 0x149ac: - r4 = 7 << 16; - r4 = r4 + -9024; - /* Next insn is delay slot */ - r31=0x149bc; - pc=0x1ae00; - run_1ae00(); return; - case 0x149bc: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r6 << 3; - r7 = r6 << 5; - r7 = r7 - r3; - r4 = r7 + -24; - r4 = r2 + r4; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x13b90; - run_13a00(); return; - case 0x149e4: - r2 = r7 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14a0c; - run_14a00(); return; - } - f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 | 256; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - case 0x14a00: - pc=0x14a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_14a00() throws ExecutionException { /* 0x14a00 - 0x14c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x14a00: - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - case 0x14a0c: - r2 = r5 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x153bc; - run_15200(); return; - } - f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 | 256; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; - case 0x14a34: - f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 & r2; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - r2 = r0 + 1; - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x14878; - run_14800(); return; - } - /* Next insn is delay slot */ - pc=0x14904; - run_14800(); return; - case 0x14a60: - r2 = r7 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14a88; - continue; - } - f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 | 256; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - case 0x14a88: - r2 = r5 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15344; - run_15200(); return; - } - f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 | 256; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; - case 0x14ab0: - f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x1377c; - run_13600(); return; - case 0x14ad4: - r2 = r7 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x14b24; - continue; - } - f0 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f1 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 & r2; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - r8 = fcsr; - r8 = fcsr; - r1 = r8 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r8; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f2; - case 0x14b24: - r2 = r5 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x14b70; - continue; - } - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 & r2; - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r6; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - case 0x14b70: - r4 = 7 << 16; - r4 = r4 + -9024; - /* Next insn is delay slot */ - r31=0x14b80; - pc=0x1ae00; - run_1ae00(); return; - case 0x14b80: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r6 << 3; - r4 = r6 << 5; - r4 = r4 - r3; - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r3 = r4 + -48; - r4 = r4 + -24; - r3 = r2 + r3; - r4 = r2 + r4; - r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r2 = r22 << 2; - r2 = r2 + -8; - r16 = r16 + r2; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x141dc; - run_14000(); return; - case 0x14bd0: - r2 = r7 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14bf8; - continue; - } - f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 | 256; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - case 0x14bf8: - r2 = r5 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x153d0; - run_15200(); return; - } - case 0x14c00: - pc=0x14c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_14c00() throws ExecutionException { /* 0x14c00 - 0x14e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x14c00: - f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 | 256; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; - case 0x14c20: - f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 & r2; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - r2 = r0 + 1; - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x14878; - run_14800(); return; - } - /* Next insn is delay slot */ - pc=0x14904; - run_14800(); return; - case 0x14c4c: - r2 = r7 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x14c74; - continue; - } - f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 | 256; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - case 0x14c74: - r2 = r5 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1536c; - run_15200(); return; - } - f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 | 256; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; - case 0x14c9c: - f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 & r2; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<=(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - r2 = r0 + 1; - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x14878; - run_14800(); return; - } - /* Next insn is delay slot */ - pc=0x14904; - run_14800(); return; - case 0x14cc8: - r8 = r7 & 256; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x14cf0; - continue; - } - f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 | 256; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - case 0x14cf0: - r7 = r5 & 256; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x1540c; - run_15400(); return; - } - f0 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 | 256; - { long l = Double.doubleToLongBits(((double)f0)); f15 = (int)(l >>> 32); f14 = (int)l; } - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f14; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f15; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - case 0x14d14: - f12 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - f13 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r2; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r3; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r4; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x14d38; - pc=0x33400; - run_33400(); return; - case 0x14d38: - r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - r2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r4 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r30 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r6 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x14d70: - r2 = r7 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x14dc0; - continue; - } - f0 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f1 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 & r2; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - r8 = fcsr; - r8 = fcsr; - r1 = r8 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r8; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f2; - case 0x14dc0: - r2 = r5 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x14e0c; - run_14e00(); return; - } - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 & r2; - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r6; case 0x14e00: - pc=0x14e00; + pc = 0x14e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_14e00() throws ExecutionException { /* 0x14e00 - 0x15000 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x14e00: - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - case 0x14e0c: - r4 = 7 << 16; - r4 = r4 + -9024; - /* Next insn is delay slot */ - r31=0x14e1c; - pc=0x1ae00; - run_1ae00(); return; - case 0x14e1c: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r6 << 3; - r4 = r6 << 5; - r4 = r4 - r3; - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r3 = r4 + -48; - r4 = r4 + -24; - r3 = r2 + r3; - r4 = r2 + r4; - r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r2 = r22 << 2; - r2 = r2 + -8; - r16 = r16 + r2; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x13c94; - run_13c00(); return; - case 0x14e6c: - r6 = r7 & 256; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x14e94; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + r29 = r29 + -48; + f0 = r4; + r3 = r2 + -48; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f21; + f20 = readPages[(r28 + -32740) >>> 12][((r28 + -32740) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits(((double) f0)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r3 = (r3 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f22; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f23; + r5 = f0; + r4 = f1; + f21 = readPages[(r28 + -32744) >>> 12][((r28 + -32744) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x14ea8; continue; } - f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 | 256; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - case 0x14e94: - r6 = r5 & 256; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x15358; - run_15200(); return; - } - f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 | 256; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - case 0x14eb8: - f2 = r0; - f3 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x15258; - run_15200(); return; - } - f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r6; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f2; - r6 = r2 + r0; - r2 = r0 + 2; - case 0x14f20: - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r5 = r0 + -257; - r7 = r7 & r5; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x14f40: - r2 = r7 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x14f90; - continue; - } - f0 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f1 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 & r2; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - r8 = fcsr; - r8 = fcsr; - r1 = r8 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r8; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f2; - case 0x14f90: - r2 = r5 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x14fdc; - continue; - } - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 & r2; - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r6; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f2; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - case 0x14fdc: - r4 = 7 << 16; - r4 = r4 + -9024; - /* Next insn is delay slot */ - r31=0x14fec; - pc=0x1ae00; - run_1ae00(); return; - case 0x14fec: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r6 << 3; - r4 = r6 << 5; - r4 = r4 - r3; - case 0x15000: - pc=0x15000; + f22 = readPages[(r28 + -32732) >>> 12][((r28 + -32732) >>> 2) & 0x3ff]; + f23 = readPages[(r28 + -32736) >>> 12][((r28 + -32736) >>> 2) & 0x3ff]; + case 0x14e50: + f4 = r5; + r2 = r2 & 15; + f5 = r4; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = r2; { + long l = Double.doubleToLongBits(((double) f4)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + r5 = f4; + r4 = f5; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + r31 = 0x14e8c; + pc = 0x23400; + run_23400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x14e8c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r3 = r2 + -48; + r3 = (r3 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + r5 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x14e50; + continue; + } + case 0x14ea8: + f2 = r5; + r3 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + f3 = r4; + r6 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + / (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r2 = r3 << 5; + r2 = r6 + r2; + r6 = 6 << 16; + r6 = r6 + -26200; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r6; + r6 = r0 + 2; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r6; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff] = r0; + r3 = r3 + 1; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 20) >>> 12][((r2 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = f1; + f22 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f23 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x15000: + pc = 0x15000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_15000() throws ExecutionException { /* 0x15000 - 0x15200 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x15000: - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r3 = r4 + -48; - r4 = r4 + -24; - r3 = r2 + r3; - r4 = r2 + r4; - r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r2 = r22 << 2; - r2 = r2 + -8; - r16 = r16 + r2; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x13854; - run_13800(); return; - case 0x1503c: - r2 = r7 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15064; + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1509c; continue; } - f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 | 256; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - case 0x15064: - r2 = r5 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15380; - run_15200(); return; - } - f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 | 256; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; - case 0x1508c: - f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x13708; - run_13600(); return; - case 0x150b0: - r2 = r7 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x150d8; + r3 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x1509c; continue; } - f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 | 256; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - case 0x150d8: - r2 = r5 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x153e4; - run_15200(); return; - } - f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 | 256; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; - case 0x15100: - f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r2 = r0 + 2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x15124: - r2 = r7 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1514c; + r6 = r0 + 1; + if (r2 == r6) { + /* Next insn is delay slot */ + pc = 0x15060; continue; } - f2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 | 256; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f1; - case 0x1514c: - r2 = r5 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15394; - run_15200(); return; + if (r3 == r6) { + /* Next insn is delay slot */ + pc = 0x150a8; + continue; } - f2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r5 = r5 | 256; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = f0; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = f1; - case 0x15174: - f2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = r0 + -257; - f3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r7 = r7 & r2; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<=(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r7; + f2 = readPages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff]; + f0 = readPages[(r5 + 20) >>> 12][((r5 + 20) >>> 2) & 0x3ff]; + f3 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + f1 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; r2 = r0 + 1; - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x14878; - run_14800(); return; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x1509c; + continue; } - /* Next insn is delay slot */ - pc=0x14904; - run_14800(); return; - case 0x151a0: - r4 = 7 << 16; - r4 = r4 + -8004; - case 0x151a8: - /* Next insn is delay slot */ - r31=0x151b0; - pc=0x1b000; - run_1b000(); return; - case 0x151b0: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r6 << 3; - r4 = r6 << 5; - r4 = r4 - r3; - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r3 = r4 + -48; - r4 = r4 + -24; - r3 = r2 + r3; - r4 = r2 + r4; - r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r2 = r22 << 2; - r2 = r2 + -8; - r16 = r16 + r2; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x14430; - run_14400(); return; - case 0x15200: - pc=0x15200; + case 0x15058: + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x15060: + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x150e4; + continue; + } + r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + f0 = r2; + r2 = r0 + 1; { + long l = Double.doubleToLongBits(((double) f0)); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f0 = readPages[(r5 + 20) >>> 12][((r5 + 20) >>> 2) & 0x3ff]; + f1 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x15058; + continue; + } + case 0x1509c: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x150a8: + r2 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; + f2 = r2; + r2 = r0 + 1; { + long l = Double.doubleToLongBits(((double) f2)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f2 = readPages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff]; + f3 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x1509c; + continue; + } + /* Next insn is delay slot */ + pc = r31; + return; + case 0x150e4: + r3 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; + r2 = r3 ^ r2; + r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x15200: + pc = 0x15200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_15200() throws ExecutionException { /* 0x15200 - 0x15400 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x15200: - case 0x15204: - r2 = r5 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x14428; - run_14400(); return; - } - r4 = 7 << 16; - r4 = r4 + -9048; - /* Next insn is delay slot */ - pc=0x151a8; - run_15000(); return; - case 0x15220: - r4 = 7 << 16; - r4 = r4 + -8004; - /* Next insn is delay slot */ - r31=0x15230; - pc=0x1b000; - run_1b000(); return; - case 0x15230: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r6 << 3; - r7 = r6 << 5; - r7 = r7 - r3; - r4 = r7 + -24; - r4 = r2 + r4; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x14578; - run_14400(); return; - case 0x15258: - r5 = r5 & 16; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x15604; - run_15600(); return; - } - r6 = r2 + r0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r0; - r2 = r0 + 2; - /* Next insn is delay slot */ - pc=0x14f20; - run_14e00(); return; - case 0x15278: - /* Next insn is delay slot */ - r31=0x15280; - pc=0x1c000; - run_1c000(); return; - case 0x15280: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - f0 = r16; - r3 = r2 + -48; - r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - { long l = Double.doubleToLongBits(((double)f0)); f29 = (int)(l >>> 32); f28 = (int)l; } - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x15660; - run_15600(); return; - } - f24 = readPages[(r28+-32388)>>>12][((r28+-32388)>>>2)&0x3ff]; - f26 = f22; - f27 = f23; - f25 = readPages[(r28+-32392)>>>12][((r28+-32392)>>>2)&0x3ff]; - case 0x152ac: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))*(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f29 = (int)(l >>> 32); f28 = (int)l; } - r2 = r2 & 15; - f2 = r2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))*(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f29 = (int)(l >>> 32); f28 = (int)l; } - /* Next insn is delay slot */ - r31=0x152cc; - pc=0x1c000; - run_1c000(); return; - case 0x152cc: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r3 = r2 + -48; - r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x152ac; + r29 = r29 + -40; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r3 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r2 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r20 = r4 + r0; + r18 = r5 + r0; + r4 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r5 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; + if (r5 == r4) { + /* Next insn is delay slot */ + pc = 0x15268; continue; } - /* Next insn is delay slot */ - pc=0x12bb0; - run_12a00(); return; - case 0x152ec: - r6 = r5 & 16; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x155a8; - run_15400(); return; - } - r6 = r2 + r0; - r2 = r0 + 2; - case 0x15300: - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r0; - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x130f0; - run_13000(); return; - case 0x15318: - r2 = ~(r0 | r2); - r2 = r2 >> (r8&0x1f); - r2 = ~(r0 | r2); - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x136a4; - run_13600(); return; - case 0x15330: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x14854; - run_14800(); return; - case 0x15344: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x14ab0; - run_14a00(); return; - case 0x15358: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x14eb8; - run_14e00(); return; - case 0x1536c: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x14c9c; - run_14c00(); return; - case 0x15380: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1508c; - run_15000(); return; - case 0x15394: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x15174; - run_15000(); return; - case 0x153a8: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x13b04; - run_13a00(); return; - case 0x153bc: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x14a34; - run_14a00(); return; - case 0x153d0: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x14c20; - run_14c00(); return; - case 0x153e4: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x15100; - run_15000(); return; - case 0x153f8: - f0 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - case 0x15400: - pc=0x15400; + case 0x15240: + r2 = r0 + 1; + case 0x15244: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x15268: + r17 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r16 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + if (r3 == r17) { + /* Next insn is delay slot */ + pc = 0x152fc; + continue; + } + r19 = 5 << 16; + r19 = r19 + 25384; + if (r2 == r16) { + /* Next insn is delay slot */ + pc = 0x152dc; + continue; + } + case 0x15288: + r2 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x15240; + continue; + } + r2 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r4 = r17 + 8; + r5 = r16 + 8; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x152b0; + return; + case 0x152b0: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x15240; + continue; + } + r17 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r20 + 8) >>> 12][((r20 + 8) >>> 2) & 0x3ff]; + r16 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r2 == r17) { + /* Next insn is delay slot */ + pc = 0x152f4; + continue; + } + r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + if (r2 != r16) { + /* Next insn is delay slot */ + pc = 0x15288; + continue; + } + case 0x152dc: + r4 = r19 + r0; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x152ec; + pc = 0x21a00; + run_21a00(); + return; + case 0x152ec: + /* Next insn is delay slot */ + pc = 0x15288; + continue; + case 0x152f4: + r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + case 0x152fc: + if (r2 == r16) { + /* Next insn is delay slot */ + pc = 0x15340; + continue; + } + r4 = 5 << 16; + r4 = r4 + 25384; + r5 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x15318; + pc = 0x21a00; + run_21a00(); + return; + case 0x15318: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x15340: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x15244; + continue; + case 0x15400: + pc = 0x15400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_15400() throws ExecutionException { /* 0x15400 - 0x15600 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x15400: - f1 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x148e0; - run_14800(); return; - case 0x1540c: - f14 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - f15 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x14d14; - run_14c00(); return; - case 0x15420: - r4 = readPages[(r28+-30784)>>>12][((r28+-30784)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1542c; - pc=0x18000; - run_18000(); return; - case 0x1542c: - r4 = readPages[(r28+-30820)>>>12][((r28+-30820)>>>2)&0x3ff]; - r6 = readPages[(r28+-30784)>>>12][((r28+-30784)>>>2)&0x3ff]; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x15440; - pc=0x31000; - run_31000(); return; - case 0x15440: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1555c; + r29 = r29 + -88; + writePages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r31; + r16 = r5 + r0; + r5 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r3 = r4 + r0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x1545c; continue; } - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r22 + 1; - writePages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r22 = r22 << 2; - r2 = r2 + r22; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x125d8; - run_12400(); return; - case 0x15474: - r2 = r0 + 80; - /* Next insn is delay slot */ - pc=0x1341c; - run_13400(); return; - case 0x15480: - r30 = r0 + -1; - r22 = r0 + r0; - r16 = r0 + 46; - case 0x1548c: - r30 = r30 + 1; - /* Next insn is delay slot */ - r31=0x15498; - pc=0x1c000; - run_1c000(); return; - case 0x15498: - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x15528; + r6 = r0 + 1; + if (r5 == r6) { + /* Next insn is delay slot */ + pc = 0x154c4; continue; } - r5 = r2 < 47 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x15534; + r6 = r0 + 2; + if (r5 == r6) { + /* Next insn is delay slot */ + pc = 0x15484; continue; } - r4 = r0 + 48; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x15528; - continue; - } - r5 = r0 + 49; - if(r2 == r5) { - /* Next insn is delay slot */ - pc=0x15540; - continue; - } - case 0x154c4: - r2 = r30 < 9 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15550; - continue; - } - r4 = r30 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x15578; - continue; - } - r2 = 1 << 16; - r2 = r22 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x15550; - continue; - } - r2 = r0 + 84; - case 0x154f0: - r5 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r6 = r5 << 5; - r4 = r5 << 3; - r4 = r6 - r4; - r6 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r5 = r5 + 1; - r4 = r6 + r4; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r22; - writePages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff] = r5; - writePages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x12c58; - run_12c00(); return; - case 0x15528: - r22 = r22 << 1; - /* Next insn is delay slot */ - pc=0x1548c; - continue; - case 0x15534: - r3 = r0 + 35; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x154c4; - continue; - } - case 0x15540: - r3 = r22 << 1; - r22 = r3 | 1; - /* Next insn is delay slot */ - pc=0x1548c; - continue; - case 0x15550: - r2 = r0 + 80; - /* Next insn is delay slot */ - pc=0x154f0; - continue; - case 0x1555c: - r4 = 7 << 16; - r4 = r4 + -9160; - /* Next insn is delay slot */ - r31=0x1556c; - pc=0x1b000; - run_1b000(); return; - case 0x1556c: - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x125d8; - run_12400(); return; - case 0x15578: - r2 = r22 < 256 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x15550; - continue; - } - r2 = r0 + 82; - /* Next insn is delay slot */ - pc=0x154f0; - continue; - case 0x15590: - r2 = r16 < 256 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x15474; - continue; - } - r2 = r0 + 82; - /* Next insn is delay slot */ - pc=0x1341c; - run_13400(); return; - case 0x155a8: - r4 = 7 << 16; - r4 = r4 + -8004; - /* Next insn is delay slot */ - r31=0x155b8; - pc=0x1b000; - run_1b000(); return; - case 0x155b8: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r6 << 3; - r4 = r6 << 5; - r4 = r4 - r3; - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r3 = r4 + -48; - r4 = r4 + -24; - r4 = r2 + r4; - r3 = r2 + r3; - r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r2 = r22 << 2; - r2 = r2 + -8; - r16 = r16 + r2; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x15300; - run_15200(); return; - case 0x15600: - pc=0x15600; + r4 = 5 << 16; + r4 = r4 + 25440; + /* Next insn is delay slot */ + r31 = 0x15448; + pc = 0x21a00; + run_21a00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x15448: + r31 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + r29 = r29 + 88; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1545c: + r5 = 5 << 16; + r4 = r16 + r0; + r5 = r5 + 25400; + /* Next insn is delay slot */ + r31 = 0x15470; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x15470: + r31 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + r29 = r29 + 88; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x15484: + r7 = readPages[(r3 + 20) >>> 12][((r3 + 20) >>> 2) & 0x3ff]; + r6 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r29 + 16; + r5 = r5 + 25432; + /* Next insn is delay slot */ + r31 = 0x154a0; + pc = 0x47400; + run_47400(); + return; + case 0x154a0: + r4 = r16 + r0; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x154b0; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x154b0: + r31 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + r29 = r29 + 88; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x154c4: + r6 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r29 + 16; + r5 = r5 + 25420; + r7 = r6 + r0; + /* Next insn is delay slot */ + r31 = 0x154e0; + pc = 0x47400; + run_47400(); + return; + case 0x154e0: + r4 = r16 + r0; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x154f0; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x154f0: + /* Next insn is delay slot */ + pc = 0x15448; + continue; + case 0x15600: + pc = 0x15600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_15600() throws ExecutionException { /* 0x15600 - 0x15800 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x15600: - case 0x15604: - r4 = 7 << 16; - r4 = r4 + -8004; - /* Next insn is delay slot */ - r31=0x15614; - pc=0x1b000; - run_1b000(); return; - case 0x15614: - r6 = readPages[(r28+-30804)>>>12][((r28+-30804)>>>2)&0x3ff]; - r2 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r6 << 3; - r4 = r6 << 5; - r4 = r4 - r3; - r22 = readPages[(r28+-30796)>>>12][((r28+-30796)>>>2)&0x3ff]; - r3 = r4 + -48; - r4 = r4 + -24; - r3 = r2 + r3; - r4 = r2 + r4; - r16 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r2 = r22 << 2; - r2 = r2 + -8; - r16 = r16 + r2; - r30 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-30812)>>>12][((r28+-30812)>>>2)&0x3ff]; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x14f20; - run_14e00(); return; - case 0x15660: - f26 = f20; - f27 = f21; - /* Next insn is delay slot */ - pc=0x12bb0; - run_12a00(); return; - case 0x15800: - pc=0x15800; + r29 = r29 + -40; + r3 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r18 = r4 + r0; + r17 = r5 + r0; + r19 = r6 + r0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x15720; + continue; + } + r2 = r0 + 2; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x15650; + continue; + } + r4 = 5 << 16; + r5 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r4 = r4 + 25460; + /* Next insn is delay slot */ + r31 = 0x15650; + pc = 0x21a00; + run_21a00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x15650: + r16 = 6 << 16; + r4 = r16 + -25628; + /* Next insn is delay slot */ + r31 = 0x15660; + pc = 0x1c400; + run_1c400(); + return; + case 0x15660: + r5 = 5 << 16; + r4 = r16 + -25628; + r5 = r5 + 25504; + /* Next insn is delay slot */ + r31 = 0x15674; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x15674: + r5 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + r4 = r16 + -25628; + /* Next insn is delay slot */ + r31 = 0x15684; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x15684: + r5 = 5 << 16; + r4 = r16 + -25628; + r5 = r5 + 25544; + /* Next insn is delay slot */ + r31 = 0x15698; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x15698: + r2 = readPages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff]; + r4 = r16 + -25628; + r5 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x156ac; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x156ac: + r5 = 5 << 16; + r4 = r16 + -25628; + r5 = r5 + 25552; + /* Next insn is delay slot */ + r31 = 0x156c0; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x156c0: + r2 = readPages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff]; + r4 = r16 + -25628; + r5 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x156d4; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x156d4: + r5 = 6 << 16; + r4 = r16 + -25628; + r5 = r5 + -29496; + /* Next insn is delay slot */ + r31 = 0x156e8; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x156e8: + r4 = r16 + -25628; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x156f8; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x156f8: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r5 = readPages[(r16 + -25628) >>> 12][((r16 + -25628) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r0 + -2; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x15720: + r2 = r0 + 1; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x15740; + continue; + } + r4 = 5 << 16; + r5 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r4 = r4 + 25480; + /* Next insn is delay slot */ + r31 = 0x15740; + pc = 0x21a00; + run_21a00(); + return; + case 0x15740: + r16 = 6 << 16; + r4 = r16 + -25628; + /* Next insn is delay slot */ + r31 = 0x15750; + pc = 0x1c400; + run_1c400(); + return; + case 0x15750: + r5 = 5 << 16; + r4 = r16 + -25628; + r5 = r5 + 25504; + /* Next insn is delay slot */ + r31 = 0x15764; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x15764: + r5 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + r4 = r16 + -25628; + /* Next insn is delay slot */ + r31 = 0x15774; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x15774: + r5 = 5 << 16; + r4 = r16 + -25628; + r5 = r5 + 25544; + /* Next insn is delay slot */ + r31 = 0x15788; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x15788: + /* Next insn is delay slot */ + pc = 0x156c0; + continue; + case 0x15800: + pc = 0x15800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_15800() throws ExecutionException { /* 0x15800 - 0x15a00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x15800: - r29 = r29 + -24; - r4 = r0 + 256; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x15814; - pc=0x17600; - run_17600(); return; - case 0x15814: - r4 = r0 + 8; - writePages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x15824; - pc=0x17600; - run_17600(); return; - case 0x15824: - r4 = r0 + 256; - writePages[(r28+-30784)>>>12][((r28+-30784)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x15834; - pc=0x17600; - run_17600(); return; - case 0x15834: - r5 = 7 << 16; - r4 = r28 + -30816; - r5 = r5 + 5648; - writePages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x1584c; - pc=0x30e00; - run_30e00(); return; - case 0x1584c: - r5 = 7 << 16; - r4 = r28 + -30820; - r5 = r5 + 5448; - /* Next insn is delay slot */ - r31=0x15860; - pc=0x30e00; - run_30e00(); return; + r2 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r3 = r0 + 20; + r6 = r4 + r0; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x15860; + continue; + } + r3 = (r2 & 0xffffffffL) < (21 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x15894; + continue; + } + r3 = r0 + 21; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x15854; + continue; + } + r2 = 6 << 16; + r2 = r2 + -26200; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 24) >>> 12][((r4 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x15854: + r3 = r0 + 22; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x15888; + continue; + } case 0x15860: - r5 = readPages[(r28+-32736)>>>12][((r28+-32736)>>>2)&0x3ff]; - r4 = readPages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff]; - r2 = r5 << 1; - r5 = r5 << 3; - writePages[(r28+-32736)>>>12][((r28+-32736)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x1587c; - pc=0x40600; - run_40600(); return; - case 0x1587c: - writePages[(r28+-30792)>>>12][((r28+-30792)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x158c8; - continue; - } - r2 = readPages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff]; - r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r2 << 1; - r5 = r2 << 4; - r2 = r2 << 6; - r5 = r2 - r5; - writePages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x158ac; - pc=0x40600; - run_40600(); return; - case 0x158ac: - writePages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x15908; - continue; - } - case 0x158b8: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + r2 = 6 << 16; + r2 = r2 + -26200; + writePages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + writePages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r6 + 16) >>> 12][((r6 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r6 + 24) >>> 12][((r6 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; return; - case 0x158c8: - r4 = 7 << 16; - r4 = r4 + -6876; - /* Next insn is delay slot */ - r31=0x158d8; - pc=0x1b200; - run_1b200(); return; - case 0x158d8: - r2 = readPages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff]; - r4 = readPages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff]; - r3 = r2 << 1; - r5 = r2 << 4; - r2 = r2 << 6; - r5 = r2 - r5; - writePages[(r28+-32740)>>>12][((r28+-32740)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x158fc; - pc=0x40600; - run_40600(); return; - case 0x158fc: - writePages[(r28+-30800)>>>12][((r28+-30800)>>>2)&0x3ff] = r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x158b8; + case 0x15888: + r4 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x15600; + run_15600(); + return; + case 0x15894: + r3 = r0 + 19; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x15888; continue; } - case 0x15908: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -6876; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=0x1b200; - run_1b200(); return; + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r3 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r4 = r4 + -1; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r4; + r2 = 6 << 16; + r2 = r2 + -26200; + writePages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + writePages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r6 + 16) >>> 12][((r6 + 16) >>> 2) & 0x3ff] = r3; + writePages[(r6 + 24) >>> 12][((r6 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; + return; case 0x15a00: - pc=0x15a00; + pc = 0x15a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_15a00() throws ExecutionException { /* 0x15a00 - 0x15c00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x15a00: - r29 = r29 + -48; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; - r16 = r4 + r0; - r4 = r29 + 16; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x15a1c; - pc=0x12400; - run_12400(); return; - case 0x15a1c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15ad4; + r2 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r6 = r4 + r0; + r3 = (r2 & 0xffffffffL) < (22 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x15a94; continue; } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r3 = r0 + 64; - r5 = r2 & 80; - if(r5 == r3) { - /* Next insn is delay slot */ - pc=0x15af8; + r3 = (r2 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x15a6c; continue; } - case 0x15a38: - r3 = r2 & 64; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x15abc; + r3 = r0 + 19; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x15ac8; continue; } - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15a70; - continue; - } - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r4 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r4 = r4 + -1; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r4; + r2 = 6 << 16; + r2 = r2 + -26200; + writePages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff] = r2; r2 = r0 + 1; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + writePages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r6 + 16) >>> 12][((r6 + 16) >>> 2) & 0x3ff] = r3; + writePages[(r6 + 24) >>> 12][((r6 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; return; - case 0x15a70: - f0 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f1 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + case 0x15a6c: + r2 = 6 << 16; + r2 = r2 + -26200; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; r2 = r0 + 1; - r4 = fcsr; - r4 = fcsr; - r1 = r4 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r4; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = f2; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 24) >>> 12][((r4 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; return; - case 0x15abc: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x15ad4: - r4 = 7 << 16; - r4 = r4 + -8036; - /* Next insn is delay slot */ - r31=0x15ae4; - pc=0x1b000; - run_1b000(); return; - case 0x15ae4: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r3 = r0 + 64; - r5 = r2 & 80; - if(r5 != r3) { - /* Next insn is delay slot */ - pc=0x15a38; + case 0x15a94: + r3 = r0 + 22; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x15ac8; continue; } - case 0x15af8: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - r5 = r5 + -8864; - /* Next insn is delay slot */ - r31=0x15b10; - pc=0x17e00; - run_17e00(); return; - case 0x15b10: - r2 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x15b24; - pc=0x17e00; - run_17e00(); return; - case 0x15b24: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = 7 << 16; - r5 = r5 + -6496; - /* Next insn is delay slot */ - r31=0x15b38; - pc=0x17e00; - run_17e00(); return; - case 0x15b38: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x15b48; - pc=0x17c00; - run_17c00(); return; - case 0x15b48: - r2 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x15b5c; - pc=0x1b200; - run_1b200(); return; - case 0x15b5c: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x15a38; - continue; + r2 = 6 << 16; + r2 = r2 + -26200; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 24) >>> 12][((r4 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x15ac8: + r4 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x15600; + run_15600(); + return; case 0x15c00: - pc=0x15c00; + pc = 0x15c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_15c00() throws ExecutionException { /* 0x15c00 - 0x15e00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x15c00: + f12 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; + f0 = readPages[(r28 + -32724) >>> 12][((r28 + -32724) >>> 2) & 0x3ff]; + f13 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32728) >>> 12][((r28 + -32728) >>> 2) & 0x3ff]; r29 = r29 + -24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - r16 = r4 + r0; - /* Next insn is delay slot */ - r31=0x15c18; - pc=0x12400; - run_12400(); return; - case 0x15c18: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15d28; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) <= (Double + .longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + r16 = r5 + r0; + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x15c4c; continue; } - case 0x15c20: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r2 & 256; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x15c74; + f0 = readPages[(r28 + -32740) >>> 12][((r28 + -32740) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32744) >>> 12][((r28 + -32744) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) <= (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x15c7c; continue; } - f0 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r3 = r0 + -257; - f1 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r2 = r2 & r3; - r4 = fcsr; - r4 = fcsr; - r1 = r4 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r4; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f2; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - case 0x15c74: - r3 = r2 & 64; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x15d40; - continue; - } - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x15ca0; - continue; - } - case 0x15c8c: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + case 0x15c4c: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 25560; + /* Next insn is delay slot */ + r31 = 0x15c60; + pc = 0x20600; + run_20600(); return; - case 0x15ca0: - r2 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; - r16 = readPages[(r28+-30824)>>>12][((r28+-30824)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff] = r2; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x15c8c; - continue; - } - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - r5 = r5 + -8864; - /* Next insn is delay slot */ - r31=0x15cd0; - pc=0x17e00; - run_17e00(); return; - case 0x15cd0: - r2 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x15ce4; - pc=0x17e00; - run_17e00(); return; - case 0x15ce4: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = 7 << 16; - r5 = r5 + -6496; - /* Next insn is delay slot */ - r31=0x15cf8; - pc=0x17e00; - run_17e00(); return; - case 0x15cf8: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x15d08; - pc=0x17c00; - run_17c00(); return; - case 0x15d08: - r2 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r25 = r16 + r0; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + case 0x15c60: + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r0; + case 0x15c68: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r25; + /* Next insn is delay slot */ + pc = r31; return; - case 0x15d28: - r4 = 7 << 16; - r4 = r4 + -8036; - /* Next insn is delay slot */ - r31=0x15d38; - pc=0x1b000; - run_1b000(); return; - case 0x15d38: - /* Next insn is delay slot */ - pc=0x15c20; + case 0x15c7c: + /* Next insn is delay slot */ + pc = r4; + r31 = 0x15c84; + return; + case 0x15c84: + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = f0; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = f1; + /* Next insn is delay slot */ + pc = 0x15c68; continue; - case 0x15d40: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -8020; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=0x1b000; - run_1b000(); return; case 0x15e00: - pc=0x15e00; + pc = 0x15e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_15e00() throws ExecutionException { /* 0x15e00 - 0x16000 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x15e00: - r29 = r29 + -48; - r4 = r29 + 16; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x15e18; - pc=0x12400; - run_12400(); return; - case 0x15e18: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15ec8; - continue; + r2 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r29 = r29 + -24; + r2 = r2 + -5; + r3 = (r2 & 0xffffffffL) < (14 & 0xffffffffL) ? 1 : 0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x16000; + run_16000(); + return; } - case 0x15e20: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r3 = r2 & 64; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x15eac; - continue; - } - r3 = r2 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x15ee0; - continue; - } - case 0x15e40: - r2 = r2 & 256; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x15e64; - continue; - } - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + r3 = 5 << 16; + r2 = r2 << 2; + r3 = r3 + 26928; + r2 = r3 + r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; return; - case 0x15e64: - f0 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f1 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + case 0x15e44: + r2 = r0 + r0; + case 0x15e48: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x15e60: + f12 = readPages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff]; + f13 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x15e74; + pc = 0x3a000; + run_3a000(); + return; + case 0x15e74: + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f1; + case 0x15e7c: + r3 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r2 = r0 + -9; + r2 = r3 & r2; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x15ea8: + f12 = readPages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff]; + f13 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x15ebc; + pc = 0x39c00; + run_39c00(); + return; + case 0x15ebc: + /* Next insn is delay slot */ + pc = 0x15e74; + continue; + case 0x15ec4: + f12 = readPages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff]; + f13 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x15ed8; + pc = 0x3a200; + run_3a200(); + return; + case 0x15ed8: + /* Next insn is delay slot */ + pc = 0x15e74; + continue; + case 0x15ee0: + r4 = 4 << 16; + r4 = r4 + -23040; + r5 = r16 + 16; + /* Next insn is delay slot */ + r31 = 0x15ef4; + pc = 0x15c00; + run_15c00(); + return; + case 0x15ef4: + /* Next insn is delay slot */ + pc = 0x15e7c; + continue; + case 0x15efc: + r4 = 4 << 16; + r4 = r4 + -23552; + r5 = r16 + 16; + /* Next insn is delay slot */ + r31 = 0x15f10; + pc = 0x15c00; + run_15c00(); + return; + case 0x15f10: + /* Next insn is delay slot */ + pc = 0x15e7c; + continue; + case 0x15f18: + f12 = readPages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff]; + f13 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x15f2c; + pc = 0x39800; + run_39800(); + return; + case 0x15f2c: + /* Next insn is delay slot */ + pc = 0x15e74; + continue; + case 0x15f34: + f0 = readPages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + f1 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r2; + r6 = fcsr; + r6 = fcsr; + r1 = r6 | 3; + r1 = r1 ^ 2; + fcsr = r1; + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity + } + fcsr = r6; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x16200; + run_16200(); + return; + case 0x15f84: + r3 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r2 = 32768 << 16; + r2 = r3 ^ r2; + r3 = readPages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff]; + writePages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff] = r2; + r2 = r0 + -9; + r2 = r3 & r2; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r4 + 24) >>> 12][((r4 + 24) >>> 2) & 0x3ff]; + r2 = r0 - r2; + /* Next insn is delay slot */ + pc = 0x15e48; + continue; + case 0x15fb8: + f0 = readPages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + f1 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r2; r4 = fcsr; r4 = fcsr; r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity + } + fcsr = r4; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f2; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x15e48; + continue; + case 0x16000: + pc = 0x16000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_16000() throws ExecutionException { /* 0x16000 - 0x16200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x16000: + r4 = r0 + r0; + r6 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x16010; + pc = 0x15600; + run_15600(); + return; + case 0x16010: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x15e48; + run_15e00(); + return; + case 0x16200: + pc = 0x16200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_16200() throws ExecutionException { /* 0x16200 - 0x16400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x16200: + r2 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r29 = r29 + -24; + r2 = r2 + -5; + r3 = (r2 & 0xffffffffL) < (14 & 0xffffffffL) ? 1 : 0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x16364; + continue; + } + r3 = 5 << 16; + r2 = r2 << 2; + r3 = r3 + 26984; + r2 = r3 + r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + return; + case 0x16244: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + r0; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x16260: + f2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 2; { + long l = Double.doubleToLongBits(((double) f2)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff] = f1; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + r0; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x16294: + f2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 2; { + long l = Double.doubleToLongBits(((double) f2)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff] = f1; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x15e00; + run_15e00(); + return; + case 0x162c0: + r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r2 = ~(r0 | r2); + case 0x162cc: + r3 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r2 = r0 + -9; + r2 = r3 & r2; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 - r2; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x16300: + r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r2 = r0 - r2; + /* Next insn is delay slot */ + pc = 0x162cc; + continue; + case 0x16314: + addr = r4 + 19; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + case 0x16318: + r3 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r2 = r0 + -8; + r2 = r3 & r2; + r2 = r2 | 8; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1634c: + addr = r4 + 18; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x16318; + continue; + case 0x16358: + addr = r4 + 17; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x16318; + continue; + case 0x16364: + r6 = r16 + r0; + r4 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x16374; + pc = 0x15600; + run_15600(); + return; + case 0x16374: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + r0; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x16400: + pc = 0x16400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_16400() throws ExecutionException { /* 0x16400 - 0x16600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x16400: + r29 = r29 + -32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r17 = r4 + r0; + r2 = r5 + r0; + r16 = readPages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff]; + r18 = readPages[(r5 + 12) >>> 12][((r5 + 12) >>> 2) & 0x3ff]; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x16490; + continue; + } + r3 = r0 + -9; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r0; + r16 = r16 & r3; + case 0x16438: + r4 = r17 + r0; + r5 = r2 + r0; + r6 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x1644c; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x1644c: + r2 = r16 & 7; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x164d8; + continue; + } + r3 = r16 & 24; + r2 = r0 + 16; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x164f8; + continue; + } + case 0x16468: + r18 = r18 & 24; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = r18 | r16; + writePages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff] = r16; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x16490: + r3 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x16438; + continue; + } + /* Next insn is delay slot */ + r31 = 0x164a8; + pc = 0x15000; + run_15000(); + return; + case 0x164a8: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1644c; + continue; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29612; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x164d8: + r2 = r0 + -8; + r16 = r16 & r2; + r2 = r18 & 7; + r16 = r16 | r2; + r3 = r16 & 24; + r2 = r0 + 16; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x16468; + continue; + } + case 0x164f8: + r2 = r0 + -9; + r18 = r18 & r2; + r18 = r18 & 24; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = r18 | r16; + writePages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff] = r16; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x16600: + pc = 0x16600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_16600() throws ExecutionException { /* 0x16600 - 0x16800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x16600: + r29 = r29 + -32; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r2 = 6 << 16; + r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2 = r2 + -26200; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x16660; + continue; + } + r4 = r6 + r0; + r5 = r7 + r0; + r6 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x16640; + pc = 0x15600; + run_15600(); + return; + case 0x16640: + r2 = r0 + 1; + case 0x16644: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x16660: + r17 = r5 + r0; + r5 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x16764; + continue; + } + r3 = r0 + 2; + r18 = r4 + r0; + if (r5 == r3) { + /* Next insn is delay slot */ + pc = 0x16720; + continue; + } + r3 = r0 + 1; + if (r5 == r3) { + /* Next insn is delay slot */ + pc = 0x166a0; + continue; + } + r4 = 5 << 16; + r4 = r4 + 25604; + /* Next insn is delay slot */ + r31 = 0x166a0; + pc = 0x21a00; + run_21a00(); + return; + case 0x166a0: + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x166e0; + continue; + } + case 0x166b0: + r17 = r2 < r17 ? 1 : 0; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x166ec; + continue; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r2; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x166e0: + r2 = r2 + r17; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x166b0; + continue; + } + case 0x166ec: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 25624; + /* Next insn is delay slot */ + r31 = 0x16700; + pc = 0x20600; + run_20600(); + return; + case 0x16700: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x16720: + f0 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + f1 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + r4 = fcsr; + r4 = fcsr; + r1 = r4 | 3; + r1 = r1 ^ 2; + fcsr = r1; + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity + } + fcsr = r4; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f2; + /* Next insn is delay slot */ + pc = 0x166a0; + continue; + case 0x16764: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 25584; + /* Next insn is delay slot */ + r31 = 0x16778; + pc = 0x20600; + run_20600(); + return; + case 0x16778: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x16644; + continue; + case 0x16800: + pc = 0x16800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_16800() throws ExecutionException { /* 0x16800 - 0x16a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x16800: + r29 = r29 + -56; + r7 = r5 + r0; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r17; + r17 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r2 = readPages[(r7 + 8) >>> 12][((r7 + 8) >>> 2) & 0x3ff]; + r3 = r0 + 33; + r16 = r4 + r0; + r5 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x16970; + continue; + } + r3 = (r2 & 0xffffffffL) < (34 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x168d4; + continue; + } + r3 = r0 + 38; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x16890; + continue; + } + r3 = r0 + 44; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x168a4; + continue; + } + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r6; + r4 = r29 + 24; + r6 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x16870; + pc = 0x16600; + run_16600(); + return; + case 0x16870: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x168b4; + continue; + } + r5 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x16888; + pc = 0x14400; + run_14400(); + return; + case 0x16888: + /* Next insn is delay slot */ + pc = 0x168b4; + continue; + case 0x16890: + r2 = 6 << 16; + r3 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + r2 = r2 + -26280; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x169f0; + continue; + } + case 0x168a4: + r4 = r16 + r0; + r5 = r7 + r0; + /* Next insn is delay slot */ + r31 = 0x168b4; + pc = 0x15600; + run_15600(); + return; + case 0x168b4: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r29 = r29 + 56; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x168d4: + r3 = r0 + 31; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x168a4; + continue; + } + r3 = 6 << 16; + r2 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + r3 = r3 + -26280; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x168a4; + continue; + } + r18 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + r19 = readPages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff]; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; + r19 = r5 + r19; + r4 = r19 + 12; + /* Next insn is delay slot */ + r31 = 0x16914; + pc = 0x20800; + run_20800(); + return; + case 0x16914: + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + r2 = r2 + r19; + addr = r2 + 8; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r3 = r0 + 1; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r19; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r3; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r6 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + r5 = r17 + 8; + r4 = r4 + 8; + /* Next insn is delay slot */ + r31 = 0x16948; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x16948: + r2 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r2 = r2 + 8; + r6 = readPages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff]; + r4 = r4 + r2; + r5 = r18 + 8; + /* Next insn is delay slot */ + r31 = 0x16968; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x16968: + /* Next insn is delay slot */ + pc = 0x169b8; + continue; + case 0x16970: + r2 = 6 << 16; + r3 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + r2 = r2 + -26280; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x168a4; + continue; + } + r5 = r6 + r0; + r18 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x16994; + pc = 0x14800; + run_14800(); + return; + case 0x16994: + r3 = 6 << 16; + r3 = r3 + -26200; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; + r3 = r0 + 1; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r0; + r2 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + case 0x169b0: + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; + case 0x169b8: + r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff] = r2; + r17 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r29 = r29 + 56; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x169f0: + r5 = r6 + r0; + r18 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x16a00; + pc = 0x14800; + run_14800(); + return; + case 0x16a00: + pc = 0x16a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_16a00() throws ExecutionException { /* 0x16a00 - 0x16c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x16a00: + r3 = 6 << 16; + r3 = r3 + -26200; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; + r3 = r0 + 1; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x169b0; + run_16800(); + return; + case 0x16c00: + pc = 0x16c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_16c00() throws ExecutionException { /* 0x16c00 - 0x16e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x16c00: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r17 = r4 + r0; + r16 = r5 + r0; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x16c4c; + continue; + } + case 0x16c20: + r4 = r17 + r0; + r5 = r16 + r0; + r6 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x16c34; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x16c34: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x16c4c: + /* Next insn is delay slot */ + r31 = 0x16c54; + pc = 0x15200; + run_15200(); + return; + case 0x16c54: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x16c20; + continue; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29612; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x16e00: + pc = 0x16e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_16e00() throws ExecutionException { /* 0x16e00 - 0x17000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x16e00: + r29 = r29 + -40; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r16 = 6 << 16; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + r19 = r4 + r0; + r4 = r16 + -25628; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + r18 = r5 + r0; + /* Next insn is delay slot */ + r31 = 0x16e30; + pc = 0x1c400; + run_1c400(); + return; + case 0x16e30: + r5 = 5 << 16; + r17 = r16 + -25628; + r4 = r16 + -25628; + r5 = r5 + 25644; + /* Next insn is delay slot */ + r31 = 0x16e48; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x16e48: + r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r5 = r19 + r0; + r4 = r17 + r0; + r18 = r18 + r2; + /* Next insn is delay slot */ + r31 = 0x16e60; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x16e60: + r5 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r2 = ((r5 & 0xffffffffL) < (r18 & 0xffffffffL)) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x16ec4; + continue; + } + writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r18; + case 0x16e78: + r5 = 5 << 16; + r4 = r16 + -25628; + r5 = r5 + 30276; + /* Next insn is delay slot */ + r31 = 0x16e8c; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x16e8c: + r4 = r16 + -25628; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x16e9c; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x16e9c: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r5 = readPages[(r16 + -25628) >>> 12][((r16 + -25628) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r0 + -2; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x16ec4: + r4 = 5 << 16; + r4 = r4 + 25664; + r5 = r5 - r18; + /* Next insn is delay slot */ + r31 = 0x16ed8; + pc = 0x21a00; + run_21a00(); + return; + case 0x16ed8: + /* Next insn is delay slot */ + pc = 0x16e78; + continue; + case 0x17000: + pc = 0x17000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_17000() throws ExecutionException { /* 0x17000 - 0x17200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x17000: + r29 = r29 + -40; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + r20 = r5 + r0; + r19 = r6 + r0; + /* Next insn is delay slot */ + r31 = 0x1702c; + pc = 0x37800; + run_37800(); + return; + case 0x1702c: + r16 = r2 + r0; + r2 = r0 + 1; + writePages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r18 = 6 << 16; + r18 = r18 + -26200; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x17160; + continue; + } + case 0x1704c: + r17 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r5 = r16 + r0; + r2 = r17 + 1; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r17 = r17 << 5; + r17 = r2 + r17; + r4 = r17 + r0; + r6 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x17078; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x17078: + if (r19 == r0) { + /* Next insn is delay slot */ + pc = 0x170a4; + continue; + } + r2 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + if (r2 == r18) { + /* Next insn is delay slot */ + pc = 0x17144; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 25688; + /* Next insn is delay slot */ + r31 = 0x170a4; + pc = 0x20600; + run_20600(); + return; + case 0x170a4: + r2 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + if (r2 == r18) { + /* Next insn is delay slot */ + pc = 0x170d8; + continue; + } + case 0x170b4: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x170d8: + r2 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x170b4; + continue; + } + r2 = 6 << 16; + r4 = readPages[(r2 + -24536) >>> 12][((r2 + -24536) >>> 2) & 0x3ff]; + r2 = 6 << 16; + r2 = readPages[(r2 + -10312) >>> 12][((r2 + -10312) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x170b4; + continue; + } + r2 = readPages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x170b4; + continue; + } + r2 = r0 + 1; + writePages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff] = r2; + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r5 = r20 + r0; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x16e00; + run_16e00(); + return; + case 0x17144: + r5 = readPages[(r16 + 44) >>> 12][((r16 + 44) >>> 2) & 0x3ff]; + r4 = r17 + 8; + r6 = r19 + r0; + /* Next insn is delay slot */ + r31 = 0x17158; + pc = 0x2dc00; + run_2dc00(); + return; + case 0x17158: + /* Next insn is delay slot */ + pc = 0x170a4; + continue; + case 0x17160: + r2 = r0 + 16; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r18; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x1704c; + continue; + case 0x17200: + pc = 0x17200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_17200() throws ExecutionException { /* 0x17200 - 0x17400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x17200: + r29 = r29 + -40; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f21; + r2 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + r3 = r0 + 2; + r16 = r4 + r0; + r18 = r5 + r0; + r17 = r6 + r0; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x172b0; + continue; + } + r7 = r0 + 1; + if (r2 != r7) { + /* Next insn is delay slot */ + pc = 0x1728c; + continue; + } + r5 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r4 = r5 + -23; + r6 = (r4 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x17280; + continue; + } + r2 = r2 << (r4 & 0x1f); + r4 = r2 & 65295; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x172e8; + continue; + } + r4 = 15 << 16; + r4 = r4 + 240; + r2 = r2 & r4; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x172b8; + continue; + } + case 0x17280: + r4 = r16 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + case 0x1728c: + f20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x15600; + run_15600(); + return; + case 0x172b0: + r5 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + case 0x172b8: + r2 = r5 + -23; + r3 = (r2 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x17280; + continue; + } + r3 = 5 << 16; + r2 = r2 << 2; + r3 = r3 + 27040; + r2 = r3 + r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + return; + case 0x172e8: + f2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r3; { + long l = Double.doubleToLongBits(((double) f2)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = f1; + /* Next insn is delay slot */ + pc = 0x172b8; + continue; + case 0x17304: + r4 = 5 << 16; + r4 = r4 + 28032; + /* Next insn is delay slot */ + r31 = 0x17314; + pc = 0x21800; + run_21800(); + return; + case 0x17314: + f0 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f1 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r4 = fcsr; + r4 = fcsr; + r1 = r4 | 3; + r1 = r1 ^ 2; + fcsr = r1; + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity + } + fcsr = r4; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f2; + r4 = r16 + r0; + r5 = r18 + r0; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r6 = r17 + r0; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x17800; + run_17800(); + return; + case 0x17380: + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + f2 = r0; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + f3 = r0; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) == (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x17720; + run_17600(); + return; + } + f2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r4 = fcsr; + r4 = fcsr; + r1 = r4 | 3; + r1 = r1 ^ 2; + fcsr = r1; + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity + } + fcsr = r4; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f2; + case 0x173e4: + r2 = r0 + 1; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + case 0x173f0: + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r2 = r2 & 23; + case 0x17400: + pc = 0x17400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_17400() throws ExecutionException { /* 0x17400 - 0x17600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x17400: + f20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r2 = r2 | r3; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r3 = r0 + -9; + r2 = r2 & r3; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x17434: + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + f2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + f3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r2 = readPages[(r17 + 24) >>> 12][((r17 + 24) >>> 2) & 0x3ff]; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f1; + r2 = r3 + r2; + /* Next insn is delay slot */ + pc = 0x173f0; + run_17200(); + return; + case 0x17464: + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + f2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + f3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r2 = readPages[(r17 + 24) >>> 12][((r17 + 24) >>> 2) & 0x3ff]; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f1; + r2 = r3 - r2; + /* Next insn is delay slot */ + pc = 0x173f0; + run_17200(); + return; + case 0x17494: + f2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + f3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x17534; + continue; + } + case 0x174b8: + r3 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r2 = r3 | r2; + f20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r4 = r4 + -26200; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r2 & 16; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; + r2 = r2 | 8; + r4 = r0 + 1; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r4; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x17510: + f2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + f3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) <= (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x174b8; + continue; + } + case 0x17534: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x174b8; + continue; + case 0x17540: + f2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + f3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) < (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x174b8; + continue; + } + /* Next insn is delay slot */ + pc = 0x17534; + continue; + case 0x1756c: + f2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + f3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) <= (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x174b8; + continue; + } + /* Next insn is delay slot */ + pc = 0x17534; + continue; + case 0x17598: + f2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + f3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) < (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x174b8; + continue; + } + /* Next insn is delay slot */ + pc = 0x17534; + continue; + case 0x175c4: + f2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + f3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x174b8; + continue; + } + /* Next insn is delay slot */ + pc = 0x17534; + continue; + case 0x175f0: + f12 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f14 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + f13 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + f15 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + case 0x17600: + pc = 0x17600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_17600() throws ExecutionException { /* 0x17600 - 0x17800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x17600: + /* Next insn is delay slot */ + r31 = 0x17608; + pc = 0x3a800; + run_3a800(); + return; + case 0x17608: + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f1; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x173f0; + run_17200(); + return; + case 0x1761c: + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + f2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + f3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = r0 + r0; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f1; + /* Next insn is delay slot */ + pc = 0x173f0; + run_17200(); + return; + case 0x17644: + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + f20 = r0; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + f21 = r0; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) == (Double + .longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x17740; + continue; + } + f2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + r2 = r0 + r0; + f3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f1; + /* Next insn is delay slot */ + pc = 0x173f0; + run_17200(); + return; + case 0x1768c: + r3 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + r2 = r0 + 2; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x177b0; + continue; + } + f14 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + case 0x176a0: + f12 = readPages[(r28 + -32716) >>> 12][((r28 + -32716) >>> 2) & 0x3ff]; + f20 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f13 = readPages[(r28 + -32720) >>> 12][((r28 + -32720) >>> 2) & 0x3ff]; + f21 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits(((double) f14)); + f15 = (int) (l >>> 32); + f14 = (int) l; + } + /* Next insn is delay slot */ + r31 = 0x176bc; + pc = 0x3a800; + run_3a800(); + return; + case 0x176bc: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r2 = r0 + r0; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f1; + /* Next insn is delay slot */ + pc = 0x173f0; + run_17200(); + return; + case 0x176d4: + r3 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + r2 = r0 + 2; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x17768; + continue; + } + r3 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + case 0x176e8: + r2 = r0 + 1; + r2 = r2 << (r3 & 0x1f); + f0 = r2; + r2 = r0 + r0; { + long l = Double.doubleToLongBits(((double) f0)); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f0 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + f1 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + / (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f1; + /* Next insn is delay slot */ + pc = 0x173f0; + run_17200(); + return; + case 0x17720: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28148; + /* Next insn is delay slot */ + r31 = 0x17734; + pc = 0x20600; + run_20600(); + return; + case 0x17734: + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x173e4; + run_17200(); + return; + case 0x17740: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28148; + /* Next insn is delay slot */ + r31 = 0x17754; + pc = 0x20600; + run_20600(); + return; + case 0x17754: + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = f20; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f21; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x173f0; + run_17200(); + return; + case 0x17768: + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r2; + r4 = fcsr; + r4 = fcsr; + r1 = r4 | 3; + r1 = r1 ^ 2; + fcsr = r1; + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity + } + fcsr = r4; + r3 = f2; + writePages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = f2; + /* Next insn is delay slot */ + pc = 0x176e8; + continue; + case 0x177b0: + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r2; + r4 = fcsr; + r4 = fcsr; + r1 = r4 | 3; + r1 = r1 ^ 2; + fcsr = r1; + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity } fcsr = r4; r2 = f2; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x15eac: - r4 = 7 << 16; - r4 = r4 + -8020; - /* Next insn is delay slot */ - r31=0x15ebc; - pc=0x1b000; - run_1b000(); return; - case 0x15ebc: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x15e40; + writePages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = f2; + f14 = r2; + /* Next insn is delay slot */ + pc = 0x176a0; continue; - case 0x15ec8: - r4 = 7 << 16; - r4 = r4 + -8036; - /* Next insn is delay slot */ - r31=0x15ed8; - pc=0x1b000; - run_1b000(); return; - case 0x15ed8: - /* Next insn is delay slot */ - pc=0x15e20; - continue; - case 0x15ee0: - r3 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; - r16 = readPages[(r28+-30824)>>>12][((r28+-30824)>>>2)&0x3ff]; - r3 = r3 + 1; - writePages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff] = r3; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x15e40; - continue; - } - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - r5 = r5 + -8864; - /* Next insn is delay slot */ - r31=0x15f10; - pc=0x17e00; - run_17e00(); return; - case 0x15f10: - r2 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x15f24; - pc=0x17e00; - run_17e00(); return; - case 0x15f24: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = 7 << 16; - r5 = r5 + -6496; - /* Next insn is delay slot */ - r31=0x15f38; - pc=0x17e00; - run_17e00(); return; - case 0x15f38: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x15f48; - pc=0x17c00; - run_17c00(); return; - case 0x15f48: - r2 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r16; - r31=0x15f5c; + case 0x17800: + pc = 0x17800; return; - case 0x15f5c: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x15e40; - continue; - case 0x16000: - pc=0x16000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_16000() throws ExecutionException { /* 0x16000 - 0x16200 */ + + private final void run_17800() throws ExecutionException { /* 0x17800 - 0x17a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x16000: - r29 = r29 + -24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; + for (;;) { + switch (pc) { + case 0x17800: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r2 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + r3 = r0 + 1; r16 = r4 + r0; - /* Next insn is delay slot */ - r31=0x16018; - pc=0x12400; - run_12400(); return; - case 0x16018: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x16094; + r18 = r5 + r0; + r17 = r6 + r0; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x178c0; continue; } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r2 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x160b8; + r7 = r0 + 2; + if (r2 != r7) { + /* Next insn is delay slot */ + pc = 0x17904; continue; } - case 0x16034: - r3 = r2 & 256; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x16080; + r7 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r7 = r7 + -23; + r8 = (r7 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x178f8; continue; } - f0 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r3 = r0 + -257; - f1 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r2 = r2 & r3; + r3 = r3 << (r7 & 0x1f); + r7 = r3 & 65295; + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x17920; + continue; + } + r2 = 15 << 16; + r2 = r2 + 128; + r2 = r3 & r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x17ca8; + run_17c00(); + return; + } + r3 = r3 & 112; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x178f8; + continue; + } + case 0x17884: + f0 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + f1 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r2; r4 = fcsr; r4 = fcsr; r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity } fcsr = r4; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f2; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - case 0x16080: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x16094: - r4 = 7 << 16; - r4 = r4 + -8036; - /* Next insn is delay slot */ - r31=0x160a4; - pc=0x1b000; - run_1b000(); return; - case 0x160a4: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r2 & 16; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x16034; + writePages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = f2; + case 0x178c0: + r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + r2 = r2 + -23; + r3 = (r2 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x178f8; continue; } - case 0x160b8: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - r5 = r5 + -8864; - /* Next insn is delay slot */ - r31=0x160d0; - pc=0x17e00; - run_17e00(); return; - case 0x160d0: - r2 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x160e4; - pc=0x17e00; - run_17e00(); return; - case 0x160e4: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = 7 << 16; - r5 = r5 + -6496; - /* Next insn is delay slot */ - r31=0x160f8; - pc=0x17e00; - run_17e00(); return; - case 0x160f8: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x16108; - pc=0x17c00; - run_17c00(); return; - case 0x16108: - r2 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1611c; - pc=0x1b200; - run_1b200(); return; - case 0x1611c: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x16034; - continue; - case 0x16200: - pc=0x16200; + r3 = 5 << 16; + r2 = r2 << 2; + r3 = r3 + 27120; + r2 = r3 + r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x178f8: + r4 = r16 + r0; + r5 = r18 + r0; + r6 = r17 + r0; + case 0x17904: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x15600; + run_15600(); + return; + case 0x17920: + f2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r2; { + long l = Double.doubleToLongBits(((double) f2)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff] = f1; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x17200; + run_17200(); + return; + case 0x17950: + r4 = 5 << 16; + r4 = r4 + 25768; + /* Next insn is delay slot */ + r31 = 0x17960; + pc = 0x21800; + run_21800(); + return; + case 0x17960: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r3 ^ r2; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 24) >>> 12][((r17 + 24) >>> 2) & 0x3ff]; + r2 = r3 + r2; + case 0x17984: + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r2 = r2 & 23; + r2 = r2 | r3; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r3 = r0 + -9; + r2 = r2 & r3; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x179c0: + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; { + long hilo = (long) (r3) * ((long) r2); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } + r2 = lo; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x17984; + continue; + case 0x179e4: + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x17d04; + run_17c00(); + return; + } + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r5 = r0 + 1; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x17a30; + run_17a00(); + return; + } + case 0x17a00: + pc = 0x17a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_16200() throws ExecutionException { /* 0x16200 - 0x16400 */ + + private final void run_17a00() throws ExecutionException { /* 0x17a00 - 0x17c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x16200: - r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - r16 = r4 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x16218; - pc=0x12400; - run_12400(); return; - case 0x16218: - r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r4 = r3 & 256; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1626c; + for (;;) { + switch (pc) { + case 0x17a00: + case 0x17a04: + r4 = r2 & 1; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x17a18; + continue; + } { + long hilo = (long) (r5) * ((long) r3); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } + r5 = lo; + case 0x17a18: + r2 = r2 >> 1; { + long hilo = (long) (r3) * ((long) r3); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } + r3 = lo; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x17a04; continue; } - f0 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r4 = r0 + -257; - f1 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r3 = r3 & r4; - r6 = fcsr; - r6 = fcsr; - r1 = r6 | 3; + case 0x17a30: + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r5; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17a40: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r3 >>> (r2 & 0x1f); + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17a60: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r3 + r2; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 24) >>> 12][((r17 + 24) >>> 2) & 0x3ff]; + r2 = r3 + r2; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17a8c: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r3 - r2; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 24) >>> 12][((r17 + 24) >>> 2) & 0x3ff]; + r2 = r3 - r2; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17ab8: + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r3 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x17ce8; + run_17c00(); + return; + } + r2 = r2 >> (r3 & 0x1f); + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17adc: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r3 ^ r2; + r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; + case 0x17af0: + r3 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r2 = r3 | r2; + r4 = r4 + -26200; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r2 & 16; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; + r2 = r2 | 8; + r4 = r0 + 1; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r4; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x17b40: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r3 & r2; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 24) >>> 12][((r17 + 24) >>> 2) & 0x3ff]; + r2 = r3 + r2; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17b6c: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r3 | r2; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 24) >>> 12][((r17 + 24) >>> 2) & 0x3ff]; + r2 = r3 + r2; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17b98: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r3 ^ r2; + r2 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + /* Next insn is delay slot */ + pc = 0x17af0; + continue; + case 0x17bb4: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r2 < r3 ? 1 : 0; + r2 = r2 ^ 1; + /* Next insn is delay slot */ + pc = 0x17af0; + continue; + case 0x17bd0: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r3 < r2 ? 1 : 0; + /* Next insn is delay slot */ + pc = 0x17af0; + continue; + case 0x17be8: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r3 < r2 ? 1 : 0; + r2 = r2 ^ 1; + /* Next insn is delay slot */ + pc = 0x17af0; + continue; + case 0x17c00: + pc = 0x17c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_17c00() throws ExecutionException { /* 0x17c00 - 0x17e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x17c00: + case 0x17c04: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r2 < r3 ? 1 : 0; + /* Next insn is delay slot */ + pc = 0x17af0; + run_17a00(); + return; + case 0x17c1c: + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x17cc0; + continue; + } + case 0x17c2c: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28148; + /* Next insn is delay slot */ + r31 = 0x17c40; + pc = 0x20600; + run_20600(); + return; + case 0x17c40: + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r0; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17c50: + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x17c2c; + continue; + } + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + hi = r3 % r2; + lo = r3 / r2; + pc = 0x17c74; + continue; + } + hi = r3 % r2; + lo = r3 / r2; + throw new ExecutionException("Break"); + case 0x17c74: + r2 = r0 + r0; + r4 = hi; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17c88: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + r2 = r3 << (r2 & 0x1f); + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17ca8: + r4 = 5 << 16; + r4 = r4 + 28032; + /* Next insn is delay slot */ + r31 = 0x17cb8; + pc = 0x21800; + run_21800(); + return; + case 0x17cb8: + /* Next insn is delay slot */ + pc = 0x17884; + run_17800(); + return; + case 0x17cc0: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + hi = r3 % r2; + lo = r3 / r2; + pc = 0x17cd4; + continue; + } + hi = r3 % r2; + lo = r3 / r2; + throw new ExecutionException("Break"); + case 0x17cd4: + r2 = lo; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17ce8: + r2 = ~(r0 | r2); + r2 = r2 >> (r3 & 0x1f); + r2 = ~(r0 | r2); + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17d04: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 25744; + /* Next insn is delay slot */ + r31 = 0x17d18; + pc = 0x20600; + run_20600(); + return; + case 0x17d18: + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r0; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x17984; + run_17800(); + return; + case 0x17e00: + pc = 0x17e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_17e00() throws ExecutionException { /* 0x17e00 - 0x18000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x17e00: + r2 = 6 << 16; + r3 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + r29 = r29 + -32; + r2 = r2 + -26200; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + r16 = r6 + r0; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x17e40; + continue; + } + case 0x17e28: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x15600; + run_15600(); + return; + case 0x17e40: + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r17 = r4 + r0; + r7 = r5 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x17ea0; + continue; + } + r3 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x17ea0; + continue; + } + r3 = r0 + 1; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x17fb4; + continue; + } + r3 = r0 + 2; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x17f9c; + continue; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = 5 << 16; + r4 = r4 + 25808; + r5 = r2 + r0; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x21a00; + run_21a00(); + return; + case 0x17ea0: + r2 = readPages[(r7 + 8) >>> 12][((r7 + 8) >>> 2) & 0x3ff]; + r2 = r2 + -23; + r3 = (r2 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x17f50; + continue; + } + r3 = 5 << 16; + r2 = r2 << 2; + r3 = r3 + 27200; + r2 = r3 + r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + return; + case 0x17ed8: + r4 = 5 << 16; + r4 = r4 + 25768; + /* Next insn is delay slot */ + r31 = 0x17ee8; + pc = 0x21800; + run_21800(); + return; + case 0x17ee8: + r3 = readPages[(r17 + 24) >>> 12][((r17 + 24) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r3 = r3 + r2; + case 0x17ef8: + r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r4 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + r2 = r2 & 7; + r2 = r2 | r4; + r4 = r0 + -9; + r2 = r2 & r4; + writePages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff] = r2; + case 0x17f14: + r4 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r0; + r4 = r4 & 16; + r2 = r2 | r4; + writePages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff] = r2; + writePages[(r17 + 24) >>> 12][((r17 + 24) >>> 2) & 0x3ff] = r3; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x17f44: + r3 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x17ef8; + continue; + case 0x17f50: + r4 = r17 + r0; + r5 = r7 + r0; + r6 = r16 + r0; + /* Next insn is delay slot */ + pc = 0x17e28; + continue; + case 0x17f64: + r3 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + r2 = r0 + -8; + r2 = r3 & r2; + r2 = r2 | 8; + writePages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff] = r2; + r3 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x17f14; + continue; + case 0x17f84: + r3 = readPages[(r17 + 24) >>> 12][((r17 + 24) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r3 = r3 - r2; + /* Next insn is delay slot */ + pc = 0x17ef8; + continue; + case 0x17f9c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x17200; + run_17200(); + return; + case 0x17fb4: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x17800; + run_17800(); + return; + case 0x18000: + pc = 0x18000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_18000() throws ExecutionException { /* 0x18000 - 0x18200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x18000: + r2 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r3 = r0 + 20; + r6 = r4 + r0; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x18070; + continue; + } + r3 = (r2 & 0xffffffffL) < (21 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x18054; + continue; + } + r3 = (r2 & 0xffffffffL) < (23 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x18098; + continue; + } + r2 = 6 << 16; + r2 = r2 + -26200; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 24) >>> 12][((r4 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x18054: + r3 = r0 + 10; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x18098; + continue; + } + r2 = r0 + 1; + writePages[(r4 + 24) >>> 12][((r4 + 24) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x18070: + r2 = 6 << 16; + r2 = r2 + -26200; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 24) >>> 12][((r4 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x18098: + r3 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + r4 = r0 + 1; + if (r3 == r4) { + /* Next insn is delay slot */ + pc = 0x180c8; + continue; + } + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x180e8; + continue; + } + r2 = r0 + 2; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x180d4; + continue; + } + r4 = r6 + r0; + /* Next insn is delay slot */ + pc = 0x15e00; + run_15e00(); + return; + case 0x180c8: + r4 = r6 + r0; + /* Next insn is delay slot */ + pc = 0x16200; + run_16200(); + return; + case 0x180d4: + r4 = 5 << 16; + r4 = r4 + 25828; + r5 = r3 + r0; + /* Next insn is delay slot */ + pc = 0x21a00; + run_21a00(); + return; + case 0x180e8: + r2 = r2 + -5; + r3 = (r2 & 0xffffffffL) < (14 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x1817c; + continue; + } + r3 = 5 << 16; + r2 = r2 << 2; + r3 = r3 + 27280; + r2 = r3 + r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + return; + case 0x18118: + r3 = readPages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff]; + r2 = r0 + -8; + r2 = r3 & r2; + r2 = r2 | 8; + writePages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff] = r2; + case 0x1812c: + writePages[(r6 + 24) >>> 12][((r6 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x18138: + r3 = readPages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff]; + r2 = r0 + -9; + r2 = r3 & r2; + writePages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r6 + 24) >>> 12][((r6 + 24) >>> 2) & 0x3ff]; + r2 = r0 - r2; + writePages[(r6 + 24) >>> 12][((r6 + 24) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x18160: + r3 = readPages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff]; + r2 = r0 + -9; + r2 = r3 & r2; + writePages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff] = r2; + writePages[(r6 + 24) >>> 12][((r6 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1817c: + r4 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x15600; + run_15600(); + return; + case 0x18200: + pc = 0x18200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_18200() throws ExecutionException { /* 0x18200 - 0x18400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x18200: + r7 = r5 + r0; + r29 = r29 + -56; + r2 = readPages[(r7 + 8) >>> 12][((r7 + 8) >>> 2) & 0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r17; + r17 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r2 = r2 + -31; + r3 = (r2 & 0xffffffffL) < (14 & 0xffffffffL) ? 1 : 0; + r16 = r4 + r0; + r5 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x18268; + continue; + } + r3 = 5 << 16; + r2 = r2 << 2; + r3 = r3 + 27336; + r2 = r3 + r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + return; + case 0x18254: + r2 = 6 << 16; + r3 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + r2 = r2 + -26240; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x183d8; + continue; + } + case 0x18268: + r4 = r16 + r0; + r5 = r7 + r0; + /* Next insn is delay slot */ + r31 = 0x18278; + pc = 0x15600; + run_15600(); + return; + case 0x18278: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r29 = r29 + 56; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x18290: + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r6; + r4 = r29 + 24; + r6 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x182a4; + pc = 0x16600; + run_16600(); + return; + case 0x182a4: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x18278; + continue; + } + r5 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x182bc; + pc = 0x12600; + run_12600(); + return; + case 0x182bc: + /* Next insn is delay slot */ + pc = 0x18278; + continue; + case 0x182c4: + r3 = 6 << 16; + r2 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + r3 = r3 + -26240; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x18268; + continue; + } + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; + r4 = r0 + 40; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + r31 = 0x182ec; + pc = 0x20800; + run_20800(); + return; + case 0x182ec: + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r3 = r0 + 1; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r5 = r17 + r0; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r0; + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x18324; + pc = 0x14200; + run_14200(); + return; + case 0x18324: + r2 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff] = r2; + r6 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r17 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + r5 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x18350; + pc = 0x14200; + run_14200(); + return; + case 0x18350: + r2 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x18278; + continue; + case 0x18368: + r2 = 6 << 16; + r3 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + r2 = r2 + -26240; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x18268; + continue; + } + r5 = r6 + r0; + /* Next insn is delay slot */ + r31 = 0x18388; + pc = 0x15200; + run_15200(); + return; + case 0x18388: + r3 = 6 << 16; + r3 = r3 + -26200; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; + r3 = r0 + 1; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x18278; + continue; + case 0x183b0: + r4 = r17 + r0; + r5 = r6 + r0; + /* Next insn is delay slot */ + r31 = 0x183c0; + pc = 0x14000; + run_14000(); + return; + case 0x183c0: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r29 = r29 + 56; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x183d8: + r5 = r6 + r0; + /* Next insn is delay slot */ + r31 = 0x183e4; + pc = 0x15200; + run_15200(); + return; + case 0x183e4: + r3 = 6 << 16; + r3 = r3 + -26200; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; + r2 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + r3 = r0 + 1; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r0; + case 0x18400: + pc = 0x18400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_18400() throws ExecutionException { /* 0x18400 - 0x18600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x18400: + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x18278; + run_18200(); + return; + case 0x18600: + pc = 0x18600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_18600() throws ExecutionException { /* 0x18600 - 0x18800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x18600: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r17 = r4 + r0; + r16 = r5 + r0; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x18630; + continue; + } + /* Next insn is delay slot */ + r31 = 0x18628; + pc = 0x14800; + run_14800(); + return; + case 0x18628: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1865c; + continue; + } + case 0x18630: + r4 = r17 + r0; + r5 = r16 + r0; + r6 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x18644; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x18644: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1865c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29612; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x18800: + pc = 0x18800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_18800() throws ExecutionException { /* 0x18800 - 0x18a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x18800: + r5 = readPages[(r28 + -32748) >>> 12][((r28 + -32748) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r29 = r29 + -24; + r2 = r5 << 1; + r5 = r5 << 3; + writePages[(r28 + -32748) >>> 12][((r28 + -32748) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x18824; + pc = 0x46200; + run_46200(); + return; + case 0x18824: + writePages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff] = r2; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x18840; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x18840: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29820; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x18a00: + pc = 0x18a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_18a00() throws ExecutionException { /* 0x18a00 - 0x18c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x18a00: + r5 = readPages[(r28 + -32752) >>> 12][((r28 + -32752) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r29 = r29 + -24; + r2 = r5 << 1; + r5 = r5 << 6; + writePages[(r28 + -32752) >>> 12][((r28 + -32752) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x18a24; + pc = 0x46200; + run_46200(); + return; + case 0x18a24: + writePages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff] = r2; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x18a40; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x18a40: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29820; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x18c00: + pc = 0x18c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_18c00() throws ExecutionException { /* 0x18c00 - 0x18e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x18c00: + r29 = r29 + -48; + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r2 << 2; + r3 = r4 + r3; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r5; + r3 = readPages[(r28 + -32748) >>> 12][((r28 + -32748) >>> 2) & 0x3ff]; + r2 = r2 + 1; + writePages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff] = r2; + r2 = r2 < r3 ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x190a0; + run_19000(); + return; + } + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + r3 = (r2 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x190bc; + run_19000(); + return; + } + case 0x18c68: + r19 = 5 << 16; + r18 = 5 << 16; + r20 = 6 << 16; + r17 = 6 << 16; + r19 = r19 + 25848; + r18 = r18 + 25944; + r20 = r20 + -24992; + case 0x18c84: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x18d78; + continue; + } + case 0x18c8c: + r4 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r2 = r4 < 2 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x18d78; + continue; + } + r8 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r4 << 2; + r3 = r3 + -8; + r3 = r8 + r3; + r5 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r7 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + r2 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + r6 = readPages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff]; + r9 = r2 < r6 ? 1 : 0; + if (r9 != r0) { + /* Next insn is delay slot */ + pc = 0x18d78; + continue; + } + if (r2 == r6) { + /* Next insn is delay slot */ + pc = 0x18da4; + continue; + } + case 0x18cd8: + r2 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; + r6 = r0 + 1; + if (r2 == r6) { + /* Next insn is delay slot */ + pc = 0x18dd8; + continue; + } + case 0x18ce8: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x18e64; + run_18e00(); + return; + } + r3 = r0 + 2; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x18e44; + run_18e00(); + return; + } + r3 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r2 = r3 < 2 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1906c; + run_19000(); + return; + } + case 0x18d10: + r2 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r3 = r3 << 5; + r3 = r3 + -64; + r4 = r2 + r3; + r7 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r6 = r3 + 32; + r7 = readPages[(r7 + 20) >>> 12][((r7 + 20) >>> 2) & 0x3ff]; + r6 = r2 + r6; + /* Next insn is delay slot */ + pc = r7; + r31 = 0x18d38; + return; + case 0x18d38: + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r2 << 2; + r2 = r2 + -1; + writePages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r3 = r3 + -8; + r3 = r4 + r3; + r2 = r2 + -1; + r4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + writePages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff] = r0; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x18c8c; + continue; + } + case 0x18d78: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x18da4: + r6 = r0 + 37; + if (r2 != r6) { + /* Next insn is delay slot */ + pc = 0x18cd8; + continue; + } + r2 = r17 + -10308; + r2 = readPages[(r2 + 52) >>> 12][((r2 + 52) >>> 2) & 0x3ff]; + r2 = (r2 & 0xffffffffL) < (3 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x18d78; + continue; + } + r2 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; + r6 = r0 + 1; + if (r2 != r6) { + /* Next insn is delay slot */ + pc = 0x18ce8; + continue; + } + case 0x18dd8: + r2 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + if (r2 <= 0) { + /* Next insn is delay slot */ + pc = 0x1903c; + run_19000(); + return; + } + case 0x18de8: + r4 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r2 = r2 << 5; + r2 = r2 + -32; + r4 = r4 + r2; + r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + case 0x18e00: + pc = 0x18e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_18e00() throws ExecutionException { /* 0x18e00 - 0x19000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x18e00: + r2 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x18e10; + return; + case 0x18e10: + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r2 << 2; + r3 = r3 + -8; + r3 = r4 + r3; + r4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff] = r0; + writePages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff] = r2; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x18c84; + run_18c00(); + return; + case 0x18e44: + r4 = 5 << 16; + r5 = r2 + r0; + r4 = r4 + 25964; + /* Next insn is delay slot */ + r31 = 0x18e58; + pc = 0x21a00; + run_21a00(); + return; + case 0x18e58: + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x18c84; + run_18c00(); + return; + case 0x18e64: + r2 = readPages[(r7 + 8) >>> 12][((r7 + 8) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x18f34; + continue; + } + r21 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r2 = r0 + 2; + r6 = r4 + r0; + if (r21 == r2) { + /* Next insn is delay slot */ + pc = 0x18f74; + continue; + } + case 0x18e88: + r2 = (r21 & 0xffffffffL) < (3 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x18f00; + continue; + } + r22 = r0 + 3; + if (r21 == r22) { + /* Next insn is delay slot */ + pc = 0x18fd8; + continue; + } + r2 = r0 + 4; + if (r21 != r2) { + /* Next insn is delay slot */ + pc = 0x18fbc; + continue; + } + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 93; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x19014; + run_19000(); + return; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 25916; + /* Next insn is delay slot */ + r31 = 0x18ed0; + pc = 0x20600; + run_20600(); + return; + case 0x18ed0: + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r22; + case 0x18ed4: + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r2 << 2; + r3 = r3 + -8; + r3 = r4 + r3; + r4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + writePages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x18d78; + run_18c00(); + return; + case 0x18f00: + r2 = r0 + 1; + if (r21 != r2) { + /* Next insn is delay slot */ + pc = 0x18fbc; + continue; + } + r4 = r4 << 2; + r2 = r0 + 4; + r8 = r8 + r4; + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r8 + -4) >>> 12][((r8 + -4) >>> 2) & 0x3ff]; + r6 = r6 + -1; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + writePages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + pc = 0x18d78; + run_18c00(); + return; + case 0x18f34: + r4 = 5 << 16; + r5 = r2 + r0; + r4 = r4 + 25880; + /* Next insn is delay slot */ + r31 = 0x18f48; + pc = 0x21a00; + run_21a00(); + return; + case 0x18f48: + r6 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r8 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r6 << 2; + r3 = r3 + -8; + r3 = r8 + r3; + r5 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r2 = r0 + 2; + r21 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r4 = r6 + r0; + if (r21 != r2) { + /* Next insn is delay slot */ + pc = 0x18e88; + continue; + } + case 0x18f74: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r5 = tmp; + r21 = r0 + 1; + r2 = r0 + 41; + writePages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff] = r21; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x190cc; + run_19000(); + return; + } + r2 = readPages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff]; + r4 = r4 << 2; + r2 = r2 + 1; + r8 = r8 + r4; + writePages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r8 + -4) >>> 12][((r8 + -4) >>> 2) & 0x3ff]; + r6 = r6 + -1; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + writePages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff] = r6; + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x18c84; + run_18c00(); + return; + case 0x18fbc: + r4 = r18 + r0; + r5 = r21 + r0; + /* Next insn is delay slot */ + r31 = 0x18fcc; + pc = 0x21a00; + run_21a00(); + return; + case 0x18fcc: + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x18c84; + run_18c00(); + return; + case 0x18fd8: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r0 + 44; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x190ec; + run_19000(); + return; + } + r3 = r0 + 93; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x19014; + run_19000(); + return; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 25896; + case 0x19000: + pc = 0x19000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_19000() throws ExecutionException { /* 0x19000 - 0x19200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x19000: + /* Next insn is delay slot */ + r31 = 0x19008; + pc = 0x20600; + run_20600(); + return; + case 0x19008: + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r21; + /* Next insn is delay slot */ + pc = 0x18ed4; + run_18e00(); + return; + case 0x19014: + /* Next insn is delay slot */ + r31 = 0x1901c; + pc = 0x23400; + run_23400(); + return; + case 0x1901c: + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r2 = r2 + -2; + writePages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x18d78; + run_18c00(); + return; + case 0x1903c: + r5 = r2 + r0; + r4 = r19 + r0; + /* Next insn is delay slot */ + r31 = 0x1904c; + pc = 0x21a00; + run_21a00(); + return; + case 0x1904c: + r3 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r3 << 2; + r3 = r4 + r3; + r2 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r5 = readPages[(r3 + -8) >>> 12][((r3 + -8) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x18de8; + run_18c00(); + return; + case 0x1906c: + r4 = 5 << 16; + r5 = r3 + r0; + r4 = r4 + 25864; + /* Next insn is delay slot */ + r31 = 0x19080; + pc = 0x21a00; + run_21a00(); + return; + case 0x19080: + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r2 = r2 << 2; + r2 = r4 + r2; + r3 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r5 = readPages[(r2 + -8) >>> 12][((r2 + -8) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x18d10; + run_18c00(); + return; + case 0x190a0: + /* Next insn is delay slot */ + r31 = 0x190a8; + pc = 0x18800; + run_18800(); + return; + case 0x190a8: + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + r3 = (r2 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x18c68; + run_18c00(); + return; + } + case 0x190bc: + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r0; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x18c68; + run_18c00(); + return; + case 0x190cc: + /* Next insn is delay slot */ + r31 = 0x190d4; + pc = 0x23400; + run_23400(); + return; + case 0x190d4: + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r21; + r2 = r2 + -2; + writePages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x18d78; + run_18c00(); + return; + case 0x190ec: + /* Next insn is delay slot */ + r31 = 0x190f4; + pc = 0x23400; + run_23400(); + return; + case 0x190f4: + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r3 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r2 = r2 << 2; + r2 = r3 + r2; + writePages[(r2 + -4) >>> 12][((r2 + -4) >>> 2) & 0x3ff] = r20; + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x18c84; + run_18c00(); + return; + case 0x19200: + pc = 0x19200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_19200() throws ExecutionException { /* 0x19200 - 0x19400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x19200: + r29 = r29 + -48; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + /* Next insn is delay slot */ + r31 = 0x19218; + pc = 0x23400; + run_23400(); + return; + case 0x19218: + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x19224; + pc = 0x2ce00; + run_2ce00(); + return; + case 0x19224: + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x192b0; + continue; + } + case 0x19234: + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x19258; + continue; + } + /* Next insn is delay slot */ + r31 = 0x19244; + pc = 0x2de00; + run_2de00(); + return; + case 0x19244: + r5 = r2 + r0; + r4 = r29 + 16; + r6 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x19258; + pc = 0x2dc00; + run_2dc00(); + return; + case 0x19258: + r3 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r2 = r3 << 5; + r2 = r4 + r2; + r4 = 6 << 16; + r4 = r4 + -26200; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r4; + r4 = r0 + 1; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r4; + r4 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r3 = r3 + 1; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r4; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r3; + r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r4; + writePages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff] = r3; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x192b0: + r2 = 6 << 16; + r2 = readPages[(r2 + -10312) >>> 12][((r2 + -10312) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x19234; + continue; + } + r4 = 5 << 16; + r4 = r4 + 25988; + r5 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x192d8; + pc = 0x16e00; + run_16e00(); + return; + case 0x192d8: + /* Next insn is delay slot */ + pc = 0x19234; + continue; + case 0x19400: + pc = 0x19400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_19400() throws ExecutionException { /* 0x19400 - 0x19600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x19400: + r2 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r29 = r29 + -64; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r17; + r16 = r4 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1a1d0; + run_1a000(); + return; + } + case 0x1943c: + r2 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1a1bc; + run_1a000(); + return; + } + case 0x1944c: + r21 = 6 << 16; + r3 = r0 + 1; + r21 = r21 + -24928; + writePages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r21; + r2 = readPages[(r28 + -32748) >>> 12][((r28 + -32748) >>> 2) & 0x3ff]; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r0; + r2 = r2 < 2 ? 1 : 0; + writePages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff] = r3; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1a1a8; + run_1a000(); + return; + } + r3 = r0 + r0; + case 0x19484: + r2 = readPages[(r28 + -32752) >>> 12][((r28 + -32752) >>> 2) & 0x3ff]; + r22 = 5 << 16; + r23 = 6 << 16; + r2 = r3 < r2 ? 1 : 0; + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r0; + r22 = r22 + 29340; + r23 = r23 + -26200; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x19570; + continue; + } + case 0x194a8: + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x19588; + continue; + } + case 0x194b8: + r3 = r0 + 1; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x1954c; + continue; + } + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x196c8; + run_19600(); + return; + } + r3 = r2 + r0; + r2 = r3 + -33; + r2 = r2 & 255; + r4 = (r2 & 0xffffffffL) < (92 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x196ec; + run_19600(); + return; + } + case 0x194ec: + r4 = 5 << 16; + r2 = r2 << 2; + r4 = r4 + 27392; + r2 = r4 + r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + return; + case 0x1950c: + /* Next insn is delay slot */ + r31 = 0x19514; + pc = 0x23400; + run_23400(); + return; + case 0x19514: + r17 = r2 + r0; + r2 = r0 + 61; + if (r17 != r2) { + /* Next insn is delay slot */ + pc = 0x19e68; + run_19e00(); + return; + } + r17 = 6 << 16; + r17 = r17 + -25136; + case 0x1952c: + /* Next insn is delay slot */ + r31 = 0x19534; + pc = 0x23400; + run_23400(); + return; + case 0x19534: + r4 = r16 + r0; + r5 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x19544; + pc = 0x18c00; + run_18c00(); + return; + case 0x19544: + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + case 0x1954c: + r3 = (r2 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x19664; + run_19600(); + return; + } + r3 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r2 = readPages[(r28 + -32752) >>> 12][((r28 + -32752) >>> 2) & 0x3ff]; + r2 = r3 < r2 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x194a8; + continue; + } + case 0x19570: + /* Next insn is delay slot */ + r31 = 0x19578; + pc = 0x18a00; + run_18a00(); + return; + case 0x19578: + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x194b8; + continue; + } + case 0x19588: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r4 = tmp; + r2 = r0 + 32; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x19714; + run_19600(); + return; + } + r18 = r4 + r0; + case 0x1959c: + r2 = r18 + -33; + r2 = r2 & 255; + r3 = (r2 & 0xffffffffL) < (62 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x195d0; + continue; + } + r3 = 5 << 16; + r2 = r2 << 2; + r3 = r3 + 27760; + r2 = r3 + r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + return; + case 0x195d0: + r18 = r18 & 255; + r2 = r18 + -48; + r2 = (r2 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x19918; + run_19800(); + return; + } + r18 = r18 + r22; + addr = r18 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x1a308; + run_1a200(); + return; + } + r3 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + case 0x19600: + pc = 0x19600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_19600() throws ExecutionException { /* 0x19600 - 0x19800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x19600: + r2 = r3 << 5; + r2 = r4 + r2; + r4 = r0 + 1; + r3 = r3 + 1; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r4; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff] = r0; + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r2 = r2 << 2; + r2 = r3 + r2; + r2 = readPages[(r2 + -4) >>> 12][((r2 + -4) >>> 2) & 0x3ff]; + if (r2 == r21) { + /* Next insn is delay slot */ + pc = 0x1a2a4; + run_1a200(); + return; + } + case 0x19648: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x1965c; + pc = 0x20600; + run_20600(); + return; + case 0x1965c: + r2 = r0 + 3; + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r2; + case 0x19664: + r3 = r0 + 4; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x19dcc; + run_19c00(); + return; + } + r2 = 6 << 16; + r2 = r2 + -26200; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + r31 = 0x19690; + pc = 0x23e00; + run_23e00(); + return; + case 0x19690: + r2 = r0 + 1; + case 0x19694: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 64; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x196c8: + /* Next insn is delay slot */ + r31 = 0x196d0; + pc = 0x23400; + run_23400(); + return; + case 0x196d0: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r3 + -33; + r2 = r2 & 255; + r4 = (r2 & 0xffffffffL) < (92 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x194ec; + run_19400(); + return; + } + case 0x196ec: + r3 = r3 & 255; + r3 = r3 + r22; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x1a228; + run_1a200(); + return; + } + r3 = 6 << 16; + r17 = r3 + -24912; + /* Next insn is delay slot */ + pc = 0x19534; + run_19400(); + return; + case 0x19714: + /* Next insn is delay slot */ + r31 = 0x1971c; + pc = 0x23400; + run_23400(); + return; + case 0x1971c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r18 = tmp; + /* Next insn is delay slot */ + pc = 0x1959c; + run_19400(); + return; + case 0x19728: + r17 = 6 << 16; + r17 = r17 + -25264; + /* Next insn is delay slot */ + pc = 0x1952c; + run_19400(); + return; + case 0x19738: + r17 = 6 << 16; + r17 = r17 + -25296; + /* Next insn is delay slot */ + pc = 0x1952c; + run_19400(); + return; + case 0x19748: + r17 = 6 << 16; + r17 = r17 + -25056; + /* Next insn is delay slot */ + pc = 0x1952c; + run_19400(); + return; + case 0x19758: + r17 = 6 << 16; + r17 = r17 + -25344; + /* Next insn is delay slot */ + pc = 0x1952c; + run_19400(); + return; + case 0x19768: + /* Next insn is delay slot */ + r31 = 0x19770; + pc = 0x23400; + run_23400(); + return; + case 0x19770: + r3 = r0 + 61; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x19648; + continue; + } + case 0x1977c: + r17 = 6 << 16; + r17 = r17 + -25088; + /* Next insn is delay slot */ + pc = 0x1952c; + run_19400(); + return; + case 0x1978c: + r17 = 6 << 16; + r17 = r17 + -25008; + /* Next insn is delay slot */ + pc = 0x1952c; + run_19400(); + return; + case 0x1979c: + r17 = 6 << 16; + r17 = r17 + -25376; + /* Next insn is delay slot */ + pc = 0x1952c; + run_19400(); + return; + case 0x197ac: + /* Next insn is delay slot */ + r31 = 0x197b4; + pc = 0x23400; + run_23400(); + return; + case 0x197b4: + r3 = r0 + 61; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a210; + run_1a200(); + return; + } + r17 = 6 << 16; + r17 = r17 + -25072; + /* Next insn is delay slot */ + pc = 0x19534; + run_19400(); + return; + case 0x197d0: + /* Next insn is delay slot */ + r31 = 0x197d8; + pc = 0x23400; + run_23400(); + return; + case 0x197d8: + r3 = r0 + 61; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x19ed4; + run_19e00(); + return; + } + r3 = r0 + 62; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1977c; + continue; + } + r3 = r0 + 60; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a1e0; + run_1a000(); + return; + } + r17 = 6 << 16; + case 0x19800: + pc = 0x19800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_19800() throws ExecutionException { /* 0x19800 - 0x19a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x19800: + r17 = r17 + -25120; + /* Next insn is delay slot */ + pc = 0x19534; + run_19400(); + return; + case 0x1980c: + r17 = 6 << 16; + r17 = r17 + -25312; + /* Next insn is delay slot */ + pc = 0x1952c; + run_19400(); + return; + case 0x1981c: + r17 = 6 << 16; + r17 = r17 + -25280; + /* Next insn is delay slot */ + pc = 0x1952c; + run_19400(); + return; + case 0x1982c: + /* Next insn is delay slot */ + r31 = 0x19834; + pc = 0x23400; + run_23400(); + return; + case 0x19834: + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -25408; + /* Next insn is delay slot */ + r31 = 0x19848; + pc = 0x18c00; + run_18c00(); + return; + case 0x19848: + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r2 << 2; + r3 = r4 + r3; + r4 = 6 << 16; + r4 = r4 + -24976; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + r3 = readPages[(r28 + -32748) >>> 12][((r28 + -32748) >>> 2) & 0x3ff]; + r2 = r2 + 1; + writePages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff] = r2; + r2 = r2 < r3 ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x19ec0; + run_19e00(); + return; + } + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x1954c; + run_19400(); + return; + case 0x19888: + r17 = 6 << 16; + r17 = r17 + -25168; + case 0x19890: + /* Next insn is delay slot */ + r31 = 0x19898; + pc = 0x23400; + run_23400(); + return; + case 0x19898: + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r2 << 2; + r3 = r4 + r3; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r17; + case 0x198ac: + r3 = readPages[(r28 + -32748) >>> 12][((r28 + -32748) >>> 2) & 0x3ff]; + r2 = r2 + 1; + writePages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff] = r2; + r2 = r2 < r3 ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x198d4; + continue; + } + case 0x198c4: + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + case 0x198c8: + writePages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x1954c; + run_19400(); + return; + case 0x198d4: + /* Next insn is delay slot */ + r31 = 0x198dc; + pc = 0x18800; + run_18800(); + return; + case 0x198dc: + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x198c8; + continue; + case 0x198e8: + /* Next insn is delay slot */ + r31 = 0x198f0; + pc = 0x14a00; + run_14a00(); + return; + case 0x198f0: + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + r3 = (r2 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x198c8; + continue; + } + r2 = r0 + 1; + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x1954c; + run_19400(); + return; + case 0x19918: + r17 = r18 & 15; + /* Next insn is delay slot */ + r31 = 0x19924; + pc = 0x23400; + run_23400(); + return; + case 0x19924: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x19f3c; + run_19e00(); + return; + } + r2 = r0 + 98; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x198e8; + continue; + } + r2 = r0 + 120; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x19f3c; + run_19e00(); + return; + } + case 0x19948: + /* Next insn is delay slot */ + r31 = 0x19950; + pc = 0x14c00; + run_14c00(); + return; + case 0x19950: + /* Next insn is delay slot */ + pc = 0x198f0; + continue; + case 0x19958: + r17 = r0 + 1; + r18 = r0 + 38; + /* Next insn is delay slot */ + pc = 0x1996c; + continue; + case 0x19968: + r17 = r17 + 1; + case 0x1996c: + /* Next insn is delay slot */ + r31 = 0x19974; + pc = 0x23400; + run_23400(); + return; + case 0x19974: + if (r2 == r18) { + /* Next insn is delay slot */ + pc = 0x19968; + continue; + } + r2 = r0 + 1; + if (r17 == r2) { + /* Next insn is delay slot */ + pc = 0x1a03c; + run_1a000(); + return; + } + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + case 0x1998c: + r3 = r0 + 42; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a360; + run_1a200(); + return; + } + r3 = r2 & 255; + r3 = r3 + r22; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + if (r3 < 0) { + /* Next insn is delay slot */ + pc = 0x1a15c; + run_1a000(); + return; + } + r3 = r0 + 46; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a15c; + run_1a000(); + return; + } + r3 = r0 + 64; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a15c; + run_1a000(); + return; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29876; + /* Next insn is delay slot */ + r31 = 0x199dc; + pc = 0x20600; + run_20600(); + return; + case 0x199dc: + r2 = r0 + 3; + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r2; + case 0x199e4: + writePages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x1954c; + run_19400(); + return; + case 0x199f0: + r17 = 6 << 16; + r4 = r17 + -24536; + /* Next insn is delay slot */ + r31 = 0x19a00; + pc = 0x1c400; + run_1c400(); + return; + case 0x19a00: + pc = 0x19a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_19a00() throws ExecutionException { /* 0x19a00 - 0x19c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x19a00: + r4 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x19a0c; + pc = 0x24200; + run_24200(); + return; + case 0x19a0c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x19f94; + run_19e00(); + return; + } + case 0x19a14: + r3 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r2 = r3 << 5; + r2 = r4 + r2; + r4 = r0 + 1; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r4; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff] = r0; + r3 = r3 + 1; + r2 = r0 + 3; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r3; + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x1954c; + run_19400(); + return; + case 0x19a58: + r17 = 6 << 16; + r17 = r17 + -25392; + /* Next insn is delay slot */ + pc = 0x19890; + run_19800(); + return; + case 0x19a68: + r4 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x19a74; + pc = 0x19200; + run_19200(); + return; + case 0x19a74: + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x19a7c: + r17 = 6 << 16; + r17 = r17 + -24944; + /* Next insn is delay slot */ + pc = 0x19890; + run_19800(); + return; + case 0x19a8c: + /* Next insn is delay slot */ + r31 = 0x19a94; + pc = 0x23400; + run_23400(); + return; + case 0x19a94: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + r2 = r2 + -48; + r2 = r2 & 255; + r2 = (r2 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x19e90; + run_19e00(); + return; + } + r4 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x19abc; + pc = 0x14e00; + run_14e00(); + return; + case 0x19abc: + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x19ac4: + r17 = 6 << 16; + r4 = r17 + -24536; + /* Next insn is delay slot */ + r31 = 0x19ad4; + pc = 0x1c400; + run_1c400(); + return; + case 0x19ad4: + r18 = r0 + r0; + r30 = r17 + -24536; + r20 = r0 + 45; + r19 = r0 + 45; + /* Next insn is delay slot */ + pc = 0x19b14; + continue; + case 0x19aec: + r4 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r5 = r2 + 1; + r2 = r4 + r2; + writePages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff] = r5; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r20 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r18 = r18 ^ 1; + /* Next insn is delay slot */ + r31 = 0x19b0c; + pc = 0x23400; + run_23400(); + return; + case 0x19b0c: + if (r2 != r19) { + /* Next insn is delay slot */ + pc = 0x19b6c; + continue; + } + case 0x19b14: + r2 = readPages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r30 + 8) >>> 12][((r30 + 8) >>> 2) & 0x3ff]; + if (r2 != r4) { + /* Next insn is delay slot */ + pc = 0x19aec; + continue; + } + r4 = 6 << 16; + r4 = r4 + -24536; + /* Next insn is delay slot */ + r31 = 0x19b38; + pc = 0x1c600; + run_1c600(); + return; + case 0x19b38: + r3 = 6 << 16; + r3 = r3 + -24536; + r2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r5 = r2 + 1; + r2 = r4 + r2; + writePages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff] = r5; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r20 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r18 = r18 ^ 1; + /* Next insn is delay slot */ + r31 = 0x19b64; + pc = 0x23400; + run_23400(); + return; + case 0x19b64: + if (r2 == r19) { + /* Next insn is delay slot */ + pc = 0x19b14; + continue; + } + case 0x19b6c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r4 = r0 + 32; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x1a270; + run_1a200(); + return; + } + case 0x19b7c: + r2 = r2 & 255; + r2 = r2 + r22; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + r2 = r2 & 8; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x19ee4; + run_19e00(); + return; + } + if (r18 == r0) { + /* Next insn is delay slot */ + pc = 0x198c4; + run_19800(); + return; + } + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r2 << 2; + r3 = r4 + r3; + r4 = 6 << 16; + r4 = r4 + -25360; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x198ac; + run_19800(); + return; + case 0x19bc4: + r17 = 6 << 16; + r4 = r17 + -24536; + r30 = r17 + -24536; + /* Next insn is delay slot */ + r31 = 0x19bd8; + pc = 0x1c400; + run_1c400(); + return; + case 0x19bd8: + r20 = r30 + r0; + r19 = r0 + 43; + r18 = r0 + 43; + /* Next insn is delay slot */ + pc = 0x19c10; + run_19c00(); + return; + case 0x19bec: + r4 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r5 = r2 + 1; + r2 = r4 + r2; + writePages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff] = r5; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r19 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x19c00: + pc = 0x19c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_19c00() throws ExecutionException { /* 0x19c00 - 0x19e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x19c00: + /* Next insn is delay slot */ + r31 = 0x19c08; + pc = 0x23400; + run_23400(); + return; + case 0x19c08: + if (r2 != r18) { + /* Next insn is delay slot */ + pc = 0x19c58; + continue; + } + case 0x19c10: + r2 = readPages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r30 + 8) >>> 12][((r30 + 8) >>> 2) & 0x3ff]; + if (r2 != r4) { + /* Next insn is delay slot */ + pc = 0x19bec; + run_19a00(); + return; + } + r4 = r20 + r0; + /* Next insn is delay slot */ + r31 = 0x19c30; + pc = 0x1c600; + run_1c600(); + return; + case 0x19c30: + r2 = readPages[(r20 + 4) >>> 12][((r20 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r5 = r2 + 1; + r2 = r4 + r2; + writePages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff] = r5; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r19 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + r31 = 0x19c50; + pc = 0x23400; + run_23400(); + return; + case 0x19c50: + if (r2 == r18) { + /* Next insn is delay slot */ + pc = 0x19c10; + continue; + } + case 0x19c58: + r4 = r0 + r0; + r17 = readPages[(r20 + 4) >>> 12][((r20 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x19c68; + pc = 0x38400; + run_38400(); + return; + case 0x19c68: + r2 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + r5 = r17 + r0; + r4 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r6 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x19c80; + pc = 0x17000; + run_17000(); + return; + case 0x19c80: + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x19c88: + r17 = 6 << 16; + r17 = r17 + -25200; + /* Next insn is delay slot */ + pc = 0x19890; + run_19800(); + return; + case 0x19c98: + r17 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r4 = r0 + 40; + r2 = r17 + 1; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r17 = r17 << 5; + r17 = r2 + r17; + r2 = 6 << 16; + r2 = r2 + -26240; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x19cc8; + pc = 0x20800; + run_20800(); + return; + case 0x19cc8: + writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + r3 = r0 + 1; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r0; + r2 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x19cfc; + pc = 0x23400; + run_23400(); + return; + case 0x19cfc: + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a260; + run_1a200(); + return; + } + case 0x19d08: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 93; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x1a284; + run_1a200(); + return; + } + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r2 << 2; + r3 = r4 + r3; + r4 = 6 << 16; + r4 = r4 + -24960; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + r3 = readPages[(r28 + -32748) >>> 12][((r28 + -32748) >>> 2) & 0x3ff]; + r2 = r2 + 1; + writePages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff] = r2; + r2 = r2 < r3 ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x19eb0; + run_19e00(); + return; + } + case 0x19d4c: + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -24992; + /* Next insn is delay slot */ + r31 = 0x19d60; + pc = 0x18c00; + run_18c00(); + return; + case 0x19d60: + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + writePages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x1954c; + run_19400(); + return; + case 0x19d70: + r4 = r29 + 16; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x19d80; + pc = 0x25000; + run_25000(); + return; + case 0x19d80: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x199dc; + run_19800(); + return; + } + case 0x19d88: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 63; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x1a100; + run_1a000(); + return; + } + case 0x19d98: + r30 = 6 << 16; + r5 = readPages[(r30 + -24532) >>> 12][((r30 + -24532) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r5 = r5 + -1; + r6 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x19db4; + pc = 0x17000; + run_17000(); + return; + case 0x19db4: + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x19dbc: + r17 = 6 << 16; + r17 = r17 + -25184; + /* Next insn is delay slot */ + pc = 0x19890; + run_19800(); + return; + case 0x19dcc: + r5 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r2 = r0 + 1; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x19dec; + continue; + } + r4 = 5 << 16; + r4 = r4 + 26068; + /* Next insn is delay slot */ + r31 = 0x19dec; + pc = 0x21a00; + run_21a00(); + return; + case 0x19dec: + r5 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r2 = r0 + 1; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x19e0c; + run_19e00(); + return; + } + r4 = 5 << 16; + case 0x19e00: + pc = 0x19e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_19e00() throws ExecutionException { /* 0x19e00 - 0x1a000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x19e00: + r4 = r4 + 26088; + /* Next insn is delay slot */ + r31 = 0x19e0c; + pc = 0x21a00; + run_21a00(); + return; + case 0x19e0c: + r5 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r4 = r16 + r0; + r6 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x19e20; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x19e20: + r2 = readPages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1a118; + run_1a000(); + return; + } + r2 = 6 << 16; + r2 = r2 + -26200; + r3 = r0 + 16; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; + case 0x19e4c: + r2 = readPages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff]; + r4 = r16 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x19e5c; + return; + case 0x19e5c: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x19694; + run_19600(); + return; + case 0x19e68: + r2 = r0 + 62; + if (r17 == r2) { + /* Next insn is delay slot */ + pc = 0x1a1f0; + run_1a000(); + return; + } + r2 = r0 + 60; + if (r17 == r2) { + /* Next insn is delay slot */ + pc = 0x1977c; + run_19600(); + return; + } + r17 = 6 << 16; + r17 = r17 + -25152; + /* Next insn is delay slot */ + pc = 0x19534; + run_19400(); + return; + case 0x19e90: + r4 = r29 + 16; + r5 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x19ea0; + pc = 0x25000; + run_25000(); + return; + case 0x19ea0: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x19d88; + run_19c00(); + return; + } + /* Next insn is delay slot */ + pc = 0x199dc; + run_19800(); + return; + case 0x19eb0: + /* Next insn is delay slot */ + r31 = 0x19eb8; + pc = 0x18800; + run_18800(); + return; + case 0x19eb8: + /* Next insn is delay slot */ + pc = 0x19d4c; + run_19c00(); + return; + case 0x19ec0: + /* Next insn is delay slot */ + r31 = 0x19ec8; + pc = 0x18800; + run_18800(); + return; + case 0x19ec8: + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x1954c; + run_19400(); + return; + case 0x19ed4: + r17 = 6 << 16; + r17 = r17 + -25104; + /* Next insn is delay slot */ + pc = 0x1952c; + run_19400(); + return; + case 0x19ee4: + r4 = r17 + -24536; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x19ef4; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x19ef4: + r2 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + r5 = readPages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r5 = r5 + -1; + r6 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x19f10; + pc = 0x17000; + run_17000(); + return; + case 0x19f10: + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x19f18: + r3 = r17 << 1; + r17 = r17 << 3; + r17 = r3 + r17; + r2 = r2 & 15; + r17 = r17 + r2; + /* Next insn is delay slot */ + r31 = 0x19f34; + pc = 0x23400; + run_23400(); + return; + case 0x19f34: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + case 0x19f3c: + r2 = r3 & 255; + r4 = r2 + -48; + r4 = (r4 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x19f18; + continue; + } + r2 = r0 + 46; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x1a438; + run_1a400(); + return; + } + r3 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r2 = r3 << 5; + r2 = r4 + r2; + r3 = r3 + 1; + r4 = r0 + 1; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r4; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r17; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x19f94: + /* Next insn is delay slot */ + r31 = 0x19f9c; + pc = 0x23400; + run_23400(); + return; + case 0x19f9c: + r4 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x19fa8; + pc = 0x24600; + run_24600(); + return; + case 0x19fa8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x19a14; + run_19a00(); + return; + } + r2 = r0 + 34; + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x1a390; + run_1a200(); + return; + } + case 0x19fbc: + r30 = r17 + -24536; + r2 = readPages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1a374; + run_1a200(); + return; + } + r3 = r0 + 1; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x19ff0; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 25992; + /* Next insn is delay slot */ + r31 = 0x19ff0; + pc = 0x20600; + run_20600(); + return; + case 0x19ff0: + r2 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r4 = tmp; + /* Next insn is delay slot */ + r31 = 0x1a004; + pc = 0x1dc00; + run_1dc00(); + return; + case 0x1a000: + pc = 0x1a000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1a000() throws ExecutionException { /* 0x1a000 - 0x1a200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1a000: + case 0x1a004: + r4 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r5 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r3 = r4 << 5; + r3 = r5 + r3; + r4 = r4 + 1; + r5 = r0 + 1; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r4; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r5; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r3 + 24) >>> 12][((r3 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x1a03c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r2 & 255; + r4 = r3 + -48; + r4 = (r4 & 0xffffffffL) < (8 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x1998c; + run_19800(); + return; + } + r2 = r3 + r0; + r18 = r0 + r0; + r17 = r0 + r0; + case 0x1a064: + r2 = r2 & 7; + r17 = r17 << 3; + r17 = r17 + r2; + /* Next insn is delay slot */ + r31 = 0x1a078; + pc = 0x23400; + run_23400(); + return; + case 0x1a078: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + r18 = r18 + 1; + r3 = r2 + -48; + r3 = (r3 & 0xffffffffL) < (8 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x1a064; + continue; + } + r2 = 6 << 16; + r2 = readPages[(r2 + -10272) >>> 12][((r2 + -10272) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1a42c; + run_1a400(); + return; + } + r2 = r18 < 4 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1a42c; + run_1a400(); + return; + } + r18 = r18 < 7 ? 1 : 0; + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x1a518; + run_1a400(); + return; + } + r2 = 1 << 16; + r2 = r17 < r2 ? 1 : 0; + r2 = r2 << 2; + case 0x1a0c8: + r4 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r5 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r3 = r4 << 5; + r3 = r5 + r3; + r4 = r4 + 1; + r5 = r0 + 1; + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r4; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r5; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + writePages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff] = r17; + writePages[(r3 + 24) >>> 12][((r3 + 24) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x1a100: + /* Next insn is delay slot */ + r31 = 0x1a108; + pc = 0x38600; + run_38600(); + return; + case 0x1a108: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x19d98; + run_19c00(); + return; + } + /* Next insn is delay slot */ + pc = 0x199dc; + run_19800(); + return; + case 0x1a118: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r4 = r16 + r0; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x1a130; + return; + case 0x1a130: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1a150; + continue; + } + r2 = 6 << 16; + r2 = r2 + -10328; + r3 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r3 = r3 + 1; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r3; + case 0x1a150: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x19e4c; + run_19e00(); + return; + case 0x1a15c: + r4 = r29 + 16; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x1a16c; + pc = 0x25000; + run_25000(); + return; + case 0x1a16c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x199dc; + run_19800(); + return; + } + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 63; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x1a2e8; + run_1a200(); + return; + } + case 0x1a184: + r30 = 6 << 16; + r5 = readPages[(r30 + -24532) >>> 12][((r30 + -24532) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r5 = r5 + -1; + r6 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x1a1a0; + pc = 0x17000; + run_17000(); + return; + case 0x1a1a0: + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x1a1a8: + /* Next insn is delay slot */ + r31 = 0x1a1b0; + pc = 0x18800; + run_18800(); + return; + case 0x1a1b0: + r3 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x19484; + run_19400(); + return; + case 0x1a1bc: + /* Next insn is delay slot */ + r31 = 0x1a1c4; + pc = 0x18800; + run_18800(); + return; + case 0x1a1c4: + r2 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x1944c; + run_19400(); + return; + case 0x1a1d0: + /* Next insn is delay slot */ + r31 = 0x1a1d8; + pc = 0x18a00; + run_18a00(); + return; + case 0x1a1d8: + /* Next insn is delay slot */ + pc = 0x1943c; + run_19400(); + return; + case 0x1a1e0: + r17 = 6 << 16; + r17 = r17 + -25216; + /* Next insn is delay slot */ + pc = 0x1952c; + run_19400(); + return; + case 0x1a1f0: + /* Next insn is delay slot */ + r31 = 0x1a1f8; + pc = 0x23400; + run_23400(); + return; + case 0x1a1f8: + if (r2 == r17) { + /* Next insn is delay slot */ + pc = 0x1a294; + run_1a200(); + return; + } + case 0x1a200: + pc = 0x1a200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1a200() throws ExecutionException { /* 0x1a200 - 0x1a400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1a200: + r17 = 6 << 16; + r17 = r17 + -25232; + /* Next insn is delay slot */ + pc = 0x19534; + run_19400(); + return; + case 0x1a210: + r17 = 6 << 16; + /* Next insn is delay slot */ + r31 = 0x1a21c; + pc = 0x23400; + run_23400(); + return; + case 0x1a21c: + r17 = r17 + -25072; + /* Next insn is delay slot */ + pc = 0x19534; + run_19400(); + return; + case 0x1a228: + /* Next insn is delay slot */ + r31 = 0x1a230; + pc = 0x25400; + run_25400(); + return; + case 0x1a230: + r17 = 6 << 16; + r4 = 6 << 16; + r4 = r4 + -25860; + r5 = r29 + 16; + r6 = r17 + -24536; + /* Next insn is delay slot */ + r31 = 0x1a24c; + pc = 0x38c00; + run_38c00(); + return; + case 0x1a24c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1a2c4; + continue; + } + r17 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x19534; + run_19400(); + return; + case 0x1a260: + /* Next insn is delay slot */ + r31 = 0x1a268; + pc = 0x23400; + run_23400(); + return; + case 0x1a268: + /* Next insn is delay slot */ + pc = 0x19d08; + run_19c00(); + return; + case 0x1a270: + /* Next insn is delay slot */ + r31 = 0x1a278; + pc = 0x23400; + run_23400(); + return; + case 0x1a278: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x19b7c; + run_19a00(); + return; + case 0x1a284: + /* Next insn is delay slot */ + r31 = 0x1a28c; + pc = 0x23400; + run_23400(); + return; + case 0x1a28c: + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x1a294: + r17 = 6 << 16; + r17 = r17 + -25248; + /* Next insn is delay slot */ + pc = 0x1952c; + run_19400(); + return; + case 0x1a2a4: + r2 = 6 << 16; + r5 = r2 + -24912; + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x1a2b8; + pc = 0x18c00; + run_18c00(); + return; + case 0x1a2b8: + r2 = readPages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x1954c; + run_19400(); + return; + case 0x1a2c4: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 26048; + /* Next insn is delay slot */ + r31 = 0x1a2d8; + pc = 0x20600; + run_20600(); + return; + case 0x1a2d8: + r2 = r0 + 3; + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x19664; + run_19600(); + return; + case 0x1a2e8: + /* Next insn is delay slot */ + r31 = 0x1a2f0; + pc = 0x38600; + run_38600(); + return; + case 0x1a2f0: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1a184; + run_1a000(); + return; + } + r2 = r0 + 3; + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x199e4; + run_19800(); + return; + case 0x1a308: + /* Next insn is delay slot */ + r31 = 0x1a310; + pc = 0x25200; + run_25200(); + return; + case 0x1a310: + r3 = r0 + 3; + r17 = 6 << 16; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a454; + run_1a400(); + return; + } + case 0x1a320: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r0 + 40; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a4bc; + run_1a400(); + return; + } + r3 = r0 + 63; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a528; + run_1a400(); + return; + } + case 0x1a33c: + r30 = r17 + -24536; + r5 = readPages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff]; + r4 = r0 + r0; + r5 = r5 + -1; + r6 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x1a358; + pc = 0x17000; + run_17000(); + return; + case 0x1a358: + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x1a360: + r4 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x1a36c; + pc = 0x19200; + run_19200(); + return; + case 0x1a36c: + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x1a374: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29876; + /* Next insn is delay slot */ + r31 = 0x1a388; + pc = 0x20600; + run_20600(); + return; + case 0x1a388: + /* Next insn is delay slot */ + pc = 0x19a14; + run_19a00(); + return; + case 0x1a390: + r2 = 6 << 16; + r2 = readPages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff]; + r2 = (r2 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x19fbc; + run_19e00(); + return; + } + r2 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + r19 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r2 = r2 << 5; + r30 = r17 + -24536; + r18 = readPages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff]; + r19 = r19 + r2; + r2 = 6 << 16; + r2 = r2 + -26280; + r4 = r18 + 12; + writePages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x1a3d8; + pc = 0x20800; + run_20800(); + return; + case 0x1a3d8: + writePages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff] = r2; + r2 = r2 + r18; + addr = r2 + 8; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; + r4 = r0 + 1; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r18; + r18 = readPages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff]; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r4; + r4 = readPages[(r28 + -31372) >>> 12][((r28 + -31372) >>> 2) & 0x3ff]; + r2 = r18 << 5; + case 0x1a400: + pc = 0x1a400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1a400() throws ExecutionException { /* 0x1a400 - 0x1a600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1a400: + r2 = r4 + r2; + r4 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r5 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r6 = readPages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff]; + r4 = r4 + 8; + r18 = r18 + 1; + /* Next insn is delay slot */ + r31 = 0x1a420; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x1a420: + writePages[(r28 + -31376) >>> 12][((r28 + -31376) >>> 2) & 0x3ff] = r18; + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x1a42c: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x1a0c8; + run_1a000(); + return; + case 0x1a438: + /* Next insn is delay slot */ + r31 = 0x1a440; + pc = 0x23400; + run_23400(); + return; + case 0x1a440: + r4 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x1a44c; + pc = 0x14e00; + run_14e00(); + return; + case 0x1a44c: + /* Next insn is delay slot */ + pc = 0x198f0; + run_19800(); + return; + case 0x1a454: + r2 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r3 = r0 + 110; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r4 = tmp; + r4 = r4 | 32; + if (r4 != r3) { + /* Next insn is delay slot */ + pc = 0x1a320; + run_1a200(); + return; + } + addr = r2 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r4 = tmp; + r3 = r0 + 111; + r4 = r4 | 32; + if (r4 != r3) { + /* Next insn is delay slot */ + pc = 0x1a320; + run_1a200(); + return; + } + addr = r2 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 116; + r3 = r3 | 32; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x1a320; + run_1a200(); + return; + } + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r2 << 2; + r3 = r4 + r3; + r4 = 6 << 16; + r4 = r4 + -25392; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x198ac; + run_19800(); + return; + case 0x1a4bc: + r2 = 6 << 16; + r4 = r2 + -25640; + r5 = r17 + -24536; + /* Next insn is delay slot */ + r31 = 0x1a4d0; + pc = 0x1d200; + run_1d200(); + return; + case 0x1a4d0: + r4 = 6 << 16; + r3 = 6 << 16; + r4 = r4 + -26160; + r5 = r29 + 16; + r6 = r3 + -25640; + /* Next insn is delay slot */ + r31 = 0x1a4ec; + pc = 0x38c00; + run_38c00(); + return; + case 0x1a4ec: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1a538; + continue; + } + r2 = readPages[(r28 + -31368) >>> 12][((r28 + -31368) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31364) >>> 12][((r28 + -31364) >>> 2) & 0x3ff]; + r3 = r2 << 2; + r3 = r4 + r3; + r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x198ac; + run_19800(); + return; + case 0x1a518: + r2 = r17 < 256 ? 1 : 0; + r2 = r2 << 1; + /* Next insn is delay slot */ + pc = 0x1a0c8; + run_1a000(); + return; + case 0x1a528: + /* Next insn is delay slot */ + r31 = 0x1a530; + pc = 0x38600; + run_38600(); + return; + case 0x1a530: + /* Next insn is delay slot */ + pc = 0x1a33c; + run_1a200(); + return; + case 0x1a538: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 26028; + /* Next insn is delay slot */ + r31 = 0x1a54c; + pc = 0x20600; + run_20600(); + return; + case 0x1a54c: + r2 = r0 + 3; + writePages[(r28 + -31380) >>> 12][((r28 + -31380) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x1954c; + run_19400(); + return; + case 0x1a600: + pc = 0x1a600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1a600() throws ExecutionException { /* 0x1a600 - 0x1a800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1a600: + r29 = r29 + -72; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = r29 + 16; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x1a61c; + pc = 0x19400; + run_19400(); + return; + case 0x1a61c: + r2 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1a68c; + continue; + } + r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1a6b0; + continue; + } + case 0x1a63c: + r3 = 6 << 16; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r3 = r3 + -26200; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a6d8; + continue; + } + case 0x1a650: + r3 = 6 << 16; + r3 = r3 + -26280; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a718; + continue; + } + r5 = 5 << 16; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r0; + r4 = r0 + -2; + r5 = r5 + 28080; + /* Next insn is delay slot */ + r31 = 0x1a678; + pc = 0x20600; + run_20600(); + return; + case 0x1a678: + r31 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r29 = r29 + 72; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1a68c: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28116; + /* Next insn is delay slot */ + r31 = 0x1a6a0; + pc = 0x20600; + run_20600(); + return; + case 0x1a6a0: + r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1a63c; + continue; + } + case 0x1a6b0: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28132; + /* Next insn is delay slot */ + r31 = 0x1a6c4; + pc = 0x20600; + run_20600(); + return; + case 0x1a6c4: + r3 = 6 << 16; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r3 = r3 + -26200; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x1a650; + continue; + } + case 0x1a6d8: + r5 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x1a770; + continue; + } + r2 = r0 + 1; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x1a754; + continue; + } + r2 = r0 + 2; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x1a77c; + continue; + } + r4 = 5 << 16; + r4 = r4 + 26112; + /* Next insn is delay slot */ + r31 = 0x1a710; + pc = 0x21a00; + run_21a00(); + return; + case 0x1a710: + /* Next insn is delay slot */ + pc = 0x1a678; + continue; + case 0x1a718: + r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r2 = r0 + 1; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x1a744; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28008; + /* Next insn is delay slot */ + r31 = 0x1a744; + pc = 0x20600; + run_20600(); + return; + case 0x1a744: + r4 = r29 + 16; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x1a754; + pc = 0x14400; + run_14400(); + return; + case 0x1a754: + r2 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r29 = r29 + 72; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1a770: + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x1a678; + continue; + case 0x1a77c: + f0 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f1 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r4 = fcsr; + r4 = fcsr; + r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity } - fcsr = r6; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f2; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; - case 0x1626c: - r3 = r2 < 2 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x1628c; - continue; - } - r4 = 7 << 16; - r4 = r4 + -8036; - /* Next insn is delay slot */ - r31=0x16288; - pc=0x1b000; - run_1b000(); return; - case 0x16288: - r2 = r0 + r0; - case 0x1628c: - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r0 + 64; - r4 = r4 & 80; - if(r4 == r3) { - /* Next insn is delay slot */ - pc=0x162b4; - continue; - } - case 0x162a0: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + fcsr = r4; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = f2; + /* Next insn is delay slot */ + pc = 0x1a678; + continue; + case 0x1a800: + pc = 0x1a800; return; - case 0x162b4: - r3 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; - r16 = readPages[(r28+-30824)>>>12][((r28+-30824)>>>2)&0x3ff]; - r3 = r3 + 1; - writePages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff] = r3; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x162a0; - continue; - } - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - r5 = r5 + -8864; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x162e8; - pc=0x17e00; - run_17e00(); return; - case 0x162e8: - r3 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x162fc; - pc=0x17e00; - run_17e00(); return; - case 0x162fc: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = 7 << 16; - r5 = r5 + -6496; - /* Next insn is delay slot */ - r31=0x16310; - pc=0x17e00; - run_17e00(); return; - case 0x16310: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x16320; - pc=0x17c00; - run_17c00(); return; - case 0x16320: - r3 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r16; - r31=0x16334; - return; - case 0x16334: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x16400: - pc=0x16400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_16400() throws ExecutionException { /* 0x16400 - 0x16600 */ + + private final void run_1a800() throws ExecutionException { /* 0x1a800 - 0x1aa00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x16400: - r29 = r29 + -24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; + for (;;) { + switch (pc) { + case 0x1a800: + r29 = r29 + -80; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r16; + r16 = 6 << 16; + r16 = r16 + -10328; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r17; + r2 = r0 + 1; + r17 = r4 + r0; + r4 = r29 + 16; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = r31; + r18 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x1a838; + pc = 0x19400; + run_19400(); + return; + case 0x1a838: + r2 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r18; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1a8c0; + continue; + } + r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1a8e4; + continue; + } + case 0x1a858: + r3 = 6 << 16; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r3 = r3 + -26200; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a90c; + continue; + } + case 0x1a86c: + r3 = 6 << 16; + r3 = r3 + -26280; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1a94c; + continue; + } + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 28080; + /* Next insn is delay slot */ + r31 = 0x1a890; + pc = 0x20600; + run_20600(); + return; + case 0x1a890: + r4 = r17 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + /* Next insn is delay slot */ + r31 = 0x1a8a4; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x1a8a4: + r31 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r29 = r29 + 80; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1a8c0: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28116; + /* Next insn is delay slot */ + r31 = 0x1a8d4; + pc = 0x20600; + run_20600(); + return; + case 0x1a8d4: + r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1a858; + continue; + } + case 0x1a8e4: + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 28132; + /* Next insn is delay slot */ + r31 = 0x1a8f8; + pc = 0x20600; + run_20600(); + return; + case 0x1a8f8: + r3 = 6 << 16; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r3 = r3 + -26200; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x1a86c; + continue; + } + case 0x1a90c: + r5 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x1a9fc; + continue; + } + r2 = r0 + 1; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x1a890; + continue; + } + r3 = r0 + 2; + if (r5 == r3) { + /* Next insn is delay slot */ + pc = 0x1a9b8; + continue; + } + r4 = 5 << 16; + r4 = r4 + 26152; + /* Next insn is delay slot */ + r31 = 0x1a944; + pc = 0x21a00; + run_21a00(); + return; + case 0x1a944: + /* Next insn is delay slot */ + pc = 0x1a890; + continue; + case 0x1a94c: + r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r2 = r0 + 1; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x1a978; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28008; + /* Next insn is delay slot */ + r31 = 0x1a978; + pc = 0x20600; + run_20600(); + return; + case 0x1a978: + r4 = r29 + 16; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x1a988; + pc = 0x14400; + run_14400(); + return; + case 0x1a988: + r4 = r17 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + /* Next insn is delay slot */ + r31 = 0x1a99c; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x1a99c: + r31 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r29 = r29 + 80; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1a9b8: + f0 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + f1 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r4 = fcsr; + r4 = fcsr; + r1 = r4 | 3; + r1 = r1 ^ 2; + fcsr = r1; + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity + } + fcsr = r4; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f2; + /* Next insn is delay slot */ + pc = 0x1a890; + continue; + case 0x1a9fc: + r5 = 5 << 16; + case 0x1aa00: + pc = 0x1aa00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1aa00() throws ExecutionException { /* 0x1aa00 - 0x1ac00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1aa00: + r4 = r0 + -3; + r5 = r5 + 26132; + /* Next insn is delay slot */ + r31 = 0x1aa10; + pc = 0x20600; + run_20600(); + return; + case 0x1aa10: + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x1a890; + run_1a800(); + return; + case 0x1ac00: + pc = 0x1ac00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1ac00() throws ExecutionException { /* 0x1ac00 - 0x1ae00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1ac00: + r29 = r29 + -32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; r16 = r4 + r0; - /* Next insn is delay slot */ - r31=0x16418; - pc=0x12400; - run_12400(); return; - case 0x16418: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x164dc; - continue; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r2 & 64; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x16500; - continue; - } - case 0x16434: - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x16454; - continue; - } - case 0x16440: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r17 = r5 + r0; + /* Next insn is delay slot */ + r31 = 0x1ac20; + pc = 0x19400; + run_19400(); return; - case 0x16454: - r2 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; - r16 = readPages[(r28+-30824)>>>12][((r28+-30824)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff] = r2; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x16440; + case 0x1ac20: + r3 = 6 << 16; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3 = r3 + -26200; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1ad1c; continue; } - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - r5 = r5 + -8864; - /* Next insn is delay slot */ - r31=0x16484; - pc=0x17e00; - run_17e00(); return; - case 0x16484: - r2 = readPages[(r28+-30788)>>>12][((r28+-30788)>>>2)&0x3ff]; - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x16498; - pc=0x17e00; - run_17e00(); return; - case 0x16498: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r5 = 7 << 16; - r5 = r5 + -6496; - /* Next insn is delay slot */ - r31=0x164ac; - pc=0x17e00; - run_17e00(); return; - case 0x164ac: - r4 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; + r3 = 6 << 16; + r3 = r3 + -26280; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1acd8; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28080; + /* Next insn is delay slot */ + r31 = 0x1ac58; + pc = 0x20600; + run_20600(); + return; + case 0x1ac58: + r2 = readPages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff]; + r17 = r17 < r2 ? 1 : 0; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x1acb8; + continue; + } + case 0x1ac6c: + r2 = readPages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1ac94; + continue; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1ac94: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28132; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x1acb8: + r5 = 5 << 16; + writePages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff] = r0; + r4 = r0 + -2; + r5 = r5 + 28116; + /* Next insn is delay slot */ + r31 = 0x1acd0; + pc = 0x20600; + run_20600(); + return; + case 0x1acd0: + /* Next insn is delay slot */ + pc = 0x1ac6c; + continue; + case 0x1acd8: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r2 = r0 + 1; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x1ad04; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28008; + /* Next insn is delay slot */ + r31 = 0x1ad04; + pc = 0x20600; + run_20600(); + return; + case 0x1ad04: + r4 = r16 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x164bc; - pc=0x17c00; - run_17c00(); return; - case 0x164bc: - r2 = readPages[(r28+-30780)>>>12][((r28+-30780)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r25 = r16 + r0; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r25; + /* Next insn is delay slot */ + r31 = 0x1ad14; + pc = 0x14400; + run_14400(); return; - case 0x164dc: - r4 = 7 << 16; - r4 = r4 + -8036; - /* Next insn is delay slot */ - r31=0x164ec; - pc=0x1b000; - run_1b000(); return; - case 0x164ec: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r2 & 64; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x16434; + case 0x1ad14: + /* Next insn is delay slot */ + pc = 0x1ac58; + continue; + case 0x1ad1c: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r3 = r0 + 2; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1ad40; continue; } - case 0x16500: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -8020; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=0x1b000; - run_1b000(); return; - case 0x16600: - pc=0x16600; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1ac58; + continue; + } + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x1ac58; + continue; + case 0x1ad40: + f0 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + f1 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + r4 = fcsr; + r4 = fcsr; + r1 = r4 | 3; + r1 = r1 ^ 2; + fcsr = r1; + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity + } + fcsr = r4; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = f2; + /* Next insn is delay slot */ + pc = 0x1ac58; + continue; + case 0x1ae00: + pc = 0x1ae00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_16600() throws ExecutionException { /* 0x16600 - 0x16800 */ + + private final void run_1ae00() throws ExecutionException { /* 0x1ae00 - 0x1b000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x16600: - r2 = readPages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x16634; + for (;;) { + switch (pc) { + case 0x1ae00: + r29 = r29 + -72; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = r29 + 16; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x1ae1c; + pc = 0x19400; + run_19400(); + return; + case 0x1ae1c: + r4 = r16 + r0; + r5 = r29 + 16; + r6 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x1ae30; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x1ae30: + r2 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1ae78; + continue; + } + case 0x1ae40: + r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1ae64; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28132; + /* Next insn is delay slot */ + r31 = 0x1ae64; + pc = 0x20600; + run_20600(); + return; + case 0x1ae64: + r31 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r29 = r29 + 72; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1ae78: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28116; + /* Next insn is delay slot */ + r31 = 0x1ae8c; + pc = 0x20600; + run_20600(); + return; + case 0x1ae8c: + /* Next insn is delay slot */ + pc = 0x1ae40; + continue; + case 0x1b000: + pc = 0x1b000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1b000() throws ExecutionException { /* 0x1b000 - 0x1b200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1b000: + r2 = readPages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1b034; continue; } r2 = r2 + -1; - writePages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff]; + writePages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff]; r3 = r2 + 4; - writePages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r31; + writePages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff] = r3; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r31; return; - case 0x16634: + case 0x1b034: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x16800: - pc=0x16800; + case 0x1b200: + pc = 0x1b200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_16800() throws ExecutionException { /* 0x16800 - 0x16a00 */ + + private final void run_1b200() throws ExecutionException { /* 0x1b200 - 0x1b400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x16800: + for (;;) { + switch (pc) { + case 0x1b200: r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; r17 = r4 + r0; r18 = r5 + r0; r16 = r0 + 45; - case 0x16820: - r3 = readPages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x168ec; + case 0x1b220: + r3 = readPages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x1b2ec; continue; } - r6 = readPages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff]; - r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + r6 = readPages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff]; + r2 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r7 = tmp; - if(r7 != r16) { - /* Next insn is delay slot */ - pc=0x168ec; + if (r7 != r16) { + /* Next insn is delay slot */ + pc = 0x1b2ec; continue; } r3 = r3 + -1; - writePages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff] = r3; - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + writePages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff] = r3; + addr = r2 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r6 = r6 + 4; - writePages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff] = r6; + writePages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff] = r6; r4 = r2 + 1; - if(r3 != r16) { - /* Next insn is delay slot */ - pc=0x168ac; + if (r3 != r16) { + /* Next insn is delay slot */ + pc = 0x1b2ac; continue; } - addr=r2+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r2 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x168ec; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x1b2ec; continue; } r4 = r2 + 2; - /* Next insn is delay slot */ - pc=r18; - r31=0x1688c; + /* Next insn is delay slot */ + pc = r18; + r31 = 0x1b28c; return; - case 0x1688c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x16820; + case 0x1b28c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1b220; continue; } - r3 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r5 = r5 + -7984; - /* Next insn is delay slot */ - pc=0x168cc; + r3 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + r5 = r5 + 28168; + /* Next insn is delay slot */ + pc = 0x1b2cc; continue; - case 0x168ac: - /* Next insn is delay slot */ - pc=r17; - r31=0x168b4; + case 0x1b2ac: + /* Next insn is delay slot */ + pc = r17; + r31 = 0x1b2b4; return; - case 0x168b4: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x16820; + case 0x1b2b4: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1b220; continue; } - r3 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r5 = r5 + -7956; - case 0x168cc: - r6 = 7 << 16; - r6 = r6 + -7904; + r3 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + r5 = r5 + 28196; + case 0x1b2cc: + r6 = 5 << 16; + r6 = r6 + 28248; r7 = r2 + r0; - /* Next insn is delay slot */ - r31=0x168e0; - pc=0x3bc00; - run_3bc00(); return; - case 0x168e0: + /* Next insn is delay slot */ + r31 = 0x1b2e0; + pc = 0x42000; + run_42000(); + return; + case 0x1b2e0: r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x168ec; - pc=0x38e00; - run_38e00(); return; - case 0x168ec: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x1b2ec; + pc = 0x40200; + run_40200(); + return; + case 0x1b2ec: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x16a00: - pc=0x16a00; + case 0x1b400: + pc = 0x1b400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_16a00() throws ExecutionException { /* 0x16a00 - 0x16c00 */ + + private final void run_1b400() throws ExecutionException { /* 0x1b400 - 0x1b600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x16a00: - r2 = readPages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x1b400: + r2 = readPages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff]; r29 = r29 + -24; r7 = r4 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x16a4c; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1b44c; continue; } r2 = r2 + -1; - writePages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff]; + writePages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff]; r3 = r2 + 4; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff] = r3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x16a4c; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + writePages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff] = r3; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1b44c; continue; } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x16a4c: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r6 = 7 << 16; - r5 = r5 + -7928; - r6 = r6 + -7904; - /* Next insn is delay slot */ - r31=0x16a6c; - pc=0x3bc00; - run_3bc00(); return; - case 0x16a6c: + case 0x1b44c: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = 5 << 16; + r5 = r5 + 28224; + r6 = r6 + 28248; + /* Next insn is delay slot */ + r31 = 0x1b46c; + pc = 0x42000; + run_42000(); + return; + case 0x1b46c: r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x16a78; - pc=0x38e00; - run_38e00(); return; - case 0x16a78: - case 0x16c00: - pc=0x16c00; + /* Next insn is delay slot */ + r31 = 0x1b478; + pc = 0x40200; + run_40200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x1b478: + case 0x1b600: + pc = 0x1b600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_16c00() throws ExecutionException { /* 0x16c00 - 0x16e00 */ + + private final void run_1b600() throws ExecutionException { /* 0x1b600 - 0x1b800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x16c00: - writePages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff] = r4; - writePages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff] = r5; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x16c2c; + for (;;) { + switch (pc) { + case 0x1b600: + writePages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff] = r4; + writePages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff] = r5; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x1b62c; continue; } r2 = r5 + 4; r4 = r4 + -1; - writePages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff] = r2; - writePages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff] = r4; - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r31; + writePages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff] = r2; + writePages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff] = r4; + r2 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r31; return; - case 0x16c2c: + case 0x1b62c: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x16e00: - pc=0x16e00; + case 0x1b800: + pc = 0x1b800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_16e00() throws ExecutionException { /* 0x16e00 - 0x17000 */ + + private final void run_1b800() throws ExecutionException { /* 0x1b800 - 0x1ba00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x16e00: - r2 = readPages[(r28+-30764)>>>12][((r28+-30764)>>>2)&0x3ff]; - r3 = readPages[(r28+-30768)>>>12][((r28+-30768)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x1b800: + r2 = readPages[(r28 + -31356) >>> 12][((r28 + -31356) >>> 2) & 0x3ff]; + r3 = readPages[(r28 + -31360) >>> 12][((r28 + -31360) >>> 2) & 0x3ff]; r29 = r29 + -24; r7 = r6 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; - writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r3; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x16e2c; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; + writePages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff] = r3; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x1b82c; continue; } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x16e3c; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1b83c; continue; } - case 0x16e2c: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + case 0x1b82c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x16e3c: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r6 = 7 << 16; - r5 = r5 + -7912; - r6 = r6 + -7904; - /* Next insn is delay slot */ - r31=0x16e5c; - pc=0x3bc00; - run_3bc00(); return; - case 0x16e5c: + case 0x1b83c: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = 5 << 16; + r5 = r5 + 28240; + r6 = r6 + 28248; + /* Next insn is delay slot */ + r31 = 0x1b85c; + pc = 0x42000; + run_42000(); + return; + case 0x1b85c: r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x16e68; - pc=0x38e00; - run_38e00(); return; - case 0x16e68: - case 0x17000: - pc=0x17000; + /* Next insn is delay slot */ + r31 = 0x1b868; + pc = 0x40200; + run_40200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x1b868: + case 0x1ba00: + pc = 0x1ba00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_17000() throws ExecutionException { /* 0x17000 - 0x17200 */ + + private final void run_1ba00() throws ExecutionException { /* 0x1ba00 - 0x1bc00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x17000: - r4 = readPages[(r28+-30760)>>>12][((r28+-30760)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x1ba00: r29 = r29 + -32; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x17054; - continue; - } - case 0x17014: - r6 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; + r4 = 6 << 16; + r6 = 6 << 16; + r4 = r4 + -24896; r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x17024; - pc=0x31000; - run_31000(); return; - case 0x17024: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x17040; + r6 = r6 + -24536; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x1ba24; + pc = 0x38c00; + run_38c00(); + return; + case 0x1ba24: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1ba40; continue; } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x17040: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + case 0x1ba40: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r2 = r0 + r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x17054: - r5 = 7 << 16; - r4 = r28 + -30760; - r5 = r5 + 5848; - /* Next insn is delay slot */ - r31=0x17068; - pc=0x30e00; - run_30e00(); return; - case 0x17068: - r4 = readPages[(r28+-30760)>>>12][((r28+-30760)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x17014; - continue; - case 0x17200: - pc=0x17200; + case 0x1bc00: + pc = 0x1bc00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_17200() throws ExecutionException { /* 0x17200 - 0x17400 */ + + private final void run_1bc00() throws ExecutionException { /* 0x1bc00 - 0x1be00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x17200: - r2 = 7 << 16; - r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x1bc00: + r2 = 6 << 16; + r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; r2 = r2 & 2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x17228; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1bc28; continue; } - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x17234; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x1bc34; continue; } - case 0x17228: - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=r31; + case 0x1bc28: + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r5; + /* Next insn is delay slot */ + pc = r31; return; - case 0x17234: - r4 = 7 << 16; - r4 = r4 + -7876; - /* Next insn is delay slot */ - pc=0x1b000; - run_1b000(); return; - case 0x17400: - pc=0x17400; + case 0x1bc34: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28276; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x1be00: + pc = 0x1be00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_17400() throws ExecutionException { /* 0x17400 - 0x17600 */ + + private final void run_1be00() throws ExecutionException { /* 0x1be00 - 0x1c000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x17400: - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x17418; + for (;;) { + switch (pc) { + case 0x1be00: + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x1be24; continue; } - r2 = 7 << 16; - writePages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=r31; + r2 = 6 << 16; + writePages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff] = r4; + r2 = r2 + -10224; + writePages[(r2 + 36) >>> 12][((r2 + 36) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 40) >>> 12][((r2 + 40) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; return; - case 0x17418: - r4 = 7 << 16; - r4 = r4 + 5996; - r2 = 7 << 16; - writePages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=r31; + case 0x1be24: + r4 = 6 << 16; + r2 = 6 << 16; + r4 = r4 + -24548; + writePages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff] = r4; + r2 = r2 + -10224; + writePages[(r2 + 36) >>> 12][((r2 + 36) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 40) >>> 12][((r2 + 40) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; return; - case 0x17600: - pc=0x17600; + case 0x1c000: + pc = 0x1c000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_17600() throws ExecutionException { /* 0x17600 - 0x17800 */ + + private final void run_1c000() throws ExecutionException { /* 0x1c000 - 0x1c200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x17600: - r29 = r29 + -32; - r2 = r4 < 128 ? 1 : 0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r17 = r4 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x17624; - continue; - } - r17 = r0 + 128; - case 0x17624: - r4 = r0 + 12; - /* Next insn is delay slot */ - r31=0x17630; - pc=0x3e800; - run_3e800(); return; - case 0x17630: - r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x17678; - continue; - } - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r17; - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x17650; - pc=0x3e800; - run_3e800(); return; - case 0x17650: - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x17678; - continue; - } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r16 + r0; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x17678: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r4 = 7 << 16; - r7 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r4 = r4 + -7800; + for (;;) { + switch (pc) { + case 0x1c000: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r4 = 5 << 16; + r7 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r29 = r29 + -24; + r4 = r4 + 28504; r5 = r0 + 1; r6 = r0 + 37; - /* Next insn is delay slot */ - r31=0x17698; - pc=0x3dc00; - run_3dc00(); return; - case 0x17698: - r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x176a4; - pc=0x38e00; - run_38e00(); return; - case 0x176a4: - case 0x17800: - pc=0x17800; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x1c028; + pc = 0x43e00; + run_43e00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x1c028: + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x1c034; + pc = 0x40200; + run_40200(); + return; + case 0x1c034: + case 0x1c200: + pc = 0x1c200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_17800() throws ExecutionException { /* 0x17800 - 0x17a00 */ + + private final void run_1c200() throws ExecutionException { /* 0x1c200 - 0x1c400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x17800: + for (;;) { + switch (pc) { + case 0x1c200: r29 = r29 + -40; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; - r17 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; - r17 = r17 << 1; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; r16 = r4 + r0; - r4 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r17 + r0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x1782c; - pc=0x40600; - run_40600(); return; - case 0x1782c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x17854; + r4 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + r18 = r5 + r0; + r5 = r6 + r0; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + r17 = r6 + r0; + /* Next insn is delay slot */ + r31 = 0x1c230; + pc = 0x46200; + run_46200(); + return; + case 0x1c230: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1c25c; continue; } - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r17; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r17; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x17854: - r4 = 7 << 16; - r4 = r4 + -6876; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x17868; - pc=0x1b200; - run_1b200(); return; - case 0x17868: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r17; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + case 0x1c25c: + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29820; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x1c274; + pc = 0x20600; + run_20600(); + return; + case 0x1c274: + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r17; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x17a00: - pc=0x17a00; + case 0x1c400: + pc = 0x1c400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_17a00() throws ExecutionException { /* 0x17a00 - 0x17c00 */ + + private final void run_1c400() throws ExecutionException { /* 0x1c400 - 0x1c600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x17a00: + for (;;) { + switch (pc) { + case 0x1c400: + r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; r29 = r29 + -24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; r16 = r4 + r0; - r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x17a1c; - pc=0x1b400; - run_1b400(); return; - case 0x17a1c: - r5 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r6 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x17a30; - pc=0x48fdc; - run_48e00(); return; - case 0x17a30: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1c434; + continue; + } + case 0x1c41c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x17c00: - pc=0x17c00; + case 0x1c434: + r4 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r2 = (r4 & 0xffffffffL) < (128 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1c44c; + continue; + } + r4 = r0 + 128; + case 0x1c44c: + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + r31 = 0x1c45c; + pc = 0x44600; + run_44600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x1c45c: + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1c41c; + continue; + } + /* Next insn is delay slot */ + r31 = 0x1c470; + pc = 0x1c000; + run_1c000(); + return; + case 0x1c470: + case 0x1c600: + pc = 0x1c600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_17c00() throws ExecutionException { /* 0x17c00 - 0x17e00 */ + + private final void run_1c600() throws ExecutionException { /* 0x1c600 - 0x1c800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x17c00: - r29 = r29 + -40; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; + for (;;) { + switch (pc) { + case 0x1c600: + r6 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r5 = r4 + 8; + r6 = r6 << 1; + /* Next insn is delay slot */ + pc = 0x1c200; + run_1c200(); + return; + case 0x1c800: + pc = 0x1c800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1c800() throws ExecutionException { /* 0x1c800 - 0x1ca00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1c800: + r29 = r29 + -24; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x1c81c; + pc = 0x20800; + run_20800(); + return; + case 0x1c81c: + r5 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r6 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x1c830; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x1c830: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1ca00: + pc = 0x1ca00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1ca00() throws ExecutionException { /* 0x1ca00 - 0x1cc00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1ca00: + r29 = r29 + -32; + r6 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; r17 = r5 << 24; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; r16 = r4 + r0; r17 = r17 >> 24; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x17c60; + if (r6 == r2) { + /* Next insn is delay slot */ + pc = 0x1ca58; continue; } - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r4 = r3 + 1; - r3 = r2 + r3; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r4; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3 = r6 + 1; + r6 = r2 + r6; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r3; + addr = r6 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r17 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; return; - case 0x17c60: - r18 = r3 << 1; - r4 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r18 + r0; - /* Next insn is delay slot */ - r31=0x17c74; - pc=0x40600; - run_40600(); return; - case 0x17c74: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x17cb4; - continue; - } - case 0x17c7c: - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r18; - r4 = r3 + 1; - r3 = r2 + r3; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r4; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + case 0x1ca58: + r6 = r6 << 1; + r5 = r4 + 8; + /* Next insn is delay slot */ + r31 = 0x1ca68; + pc = 0x1c200; + run_1c200(); return; - case 0x17cb4: - r4 = 7 << 16; - r4 = r4 + -6876; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x17cc8; - pc=0x1b200; - run_1b200(); return; - case 0x17cc8: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x17c7c; - continue; - case 0x17e00: - pc=0x17e00; + case 0x1ca68: + r6 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3 = r6 + 1; + r6 = r2 + r6; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r3; + addr = r6 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r17 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x1cc00: + pc = 0x1cc00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_17e00() throws ExecutionException { /* 0x17e00 - 0x18000 */ + + private final void run_1cc00() throws ExecutionException { /* 0x1cc00 - 0x1ce00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x17e00: - r29 = r29 + -48; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r17 = tmp; - r18 = r5 + 1; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x17ec8; - continue; - } - r19 = 7 << 16; - r16 = r4 + r0; - r19 = r19 + -6876; - /* Next insn is delay slot */ - pc=0x17e68; - continue; - case 0x17e40: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r5 + 1; - r5 = r2 + r5; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r3; - r18 = r18 + 1; - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r18+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r17 = tmp; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x17ec8; - continue; - } - case 0x17e68: - r5 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - if(r5 != r2) { - /* Next insn is delay slot */ - pc=0x17e40; - continue; - } - r20 = r5 << 1; - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r5 = r20 + r0; - /* Next insn is delay slot */ - r31=0x17e90; - pc=0x40600; - run_40600(); return; - case 0x17e90: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x17eec; - continue; - } - case 0x17e98: - r5 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r20; - r3 = r5 + 1; - r5 = r2 + r5; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r3; - r18 = r18 + 1; - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r18+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r17 = tmp; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x17e68; - continue; - } - case 0x17ec8: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x17eec: - r4 = r19 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x17efc; - pc=0x1b200; - run_1b200(); return; - case 0x17efc: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x17e98; - continue; - case 0x18000: - pc=0x18000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_18000() throws ExecutionException { /* 0x18000 - 0x18200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x18000: + for (;;) { + switch (pc) { + case 0x1cc00: r29 = r29 + -40; - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - r18 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - r2 = r2 < r18 ? 1 : 0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; r16 = r4 + r0; r17 = r5 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1808c; + r19 = r4 + 8; + /* Next insn is delay slot */ + pc = 0x1cc48; + continue; + case 0x1cc2c: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3 = r6 + 1; + r6 = r2 + r6; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r3; + addr = r6 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r18 == r0) { + /* Next insn is delay slot */ + pc = 0x1cc94; continue; } - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - case 0x18034: - r4 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1806c; + case 0x1cc48: + r6 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r17 = r17 + 1; + addr = r17 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r18 = tmp; + if (r6 != r2) { + /* Next insn is delay slot */ + pc = 0x1cc2c; continue; } - case 0x1804c: - r3 = r3 | 32; - r2 = r2 + 1; - r4 = r4 + 1; - addr=r2+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x1804c; + r6 = r6 << 1; + r4 = r16 + r0; + r5 = r19 + r0; + /* Next insn is delay slot */ + r31 = 0x1cc74; + pc = 0x1c200; + run_1c200(); + return; + case 0x1cc74: + r6 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3 = r6 + 1; + r6 = r2 + r6; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r3; + addr = r6 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x1cc48; continue; } - case 0x1806c: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + case 0x1cc94: + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r2 = r2 + -1; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x1808c: - r4 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; + case 0x1ce00: + pc = 0x1ce00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1ce00() throws ExecutionException { /* 0x1ce00 - 0x1d000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1ce00: + r29 = r29 + -40; + r3 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + r17 = r6 + r0; + r6 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = r6 - r3; + r4 = ((r4 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + r19 = r5 + r0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x1ce70; + continue; + } + r18 = r16 + 8; + case 0x1ce40: + r4 = r16 + r0; + r6 = r6 << 1; r5 = r18 + r0; - /* Next insn is delay slot */ - r31=0x1809c; - pc=0x40600; - run_40600(); return; - case 0x1809c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x180b4; + /* Next insn is delay slot */ + r31 = 0x1ce54; + pc = 0x1c200; + run_1c200(); + return; + case 0x1ce54: + r6 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r4 = r6 - r3; + r4 = ((r4 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x1ce40; continue; } - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r18; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x18034; + case 0x1ce70: + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r5 = r19 + r0; + r6 = r17 + r0; + r4 = r4 + r3; + /* Next insn is delay slot */ + r31 = 0x1ce88; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x1ce88: + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = r2 + r17; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r17; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1d000: + pc = 0x1d000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1d000() throws ExecutionException { /* 0x1d000 - 0x1d200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1d000: + r6 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r3 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + r29 = r29 + -32; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = r6 - r3; + r4 = (r4 & 0xffffffffL) < (30 & 0xffffffffL) ? 1 : 0; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + r18 = r5 + r0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x1d068; + continue; + } + r17 = r16 + 8; + case 0x1d038: + r4 = r16 + r0; + r6 = r6 << 1; + r5 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x1d04c; + pc = 0x1c200; + run_1c200(); + return; + case 0x1d04c: + r6 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r4 = r6 - r3; + r4 = (r4 & 0xffffffffL) < (30 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x1d038; + continue; + } + case 0x1d068: + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r4 + r3; + r6 = r18 + r0; + r5 = r5 + 28544; + /* Next insn is delay slot */ + r31 = 0x1d084; + pc = 0x47400; + run_47400(); + return; + case 0x1d084: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r3 + r2; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1d200: + pc = 0x1d200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1d200() throws ExecutionException { /* 0x1d200 - 0x1d400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1d200: + r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r29 = r29 + -32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + r16 = r4 + r0; + r17 = r5 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1d2c0; + continue; + } + r3 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + case 0x1d22c: + r6 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r2 = ((r3 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1d2a8; + continue; + } + case 0x1d240: + r2 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r4 = r2 + 1; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1d288; + continue; + } + case 0x1d25c: + r5 = r2 < 91 ? 1 : 0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x1d26c; + continue; + } + r2 = r2 | 32; + case 0x1d26c: + r3 = r3 + 1; + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r4 = r4 + 1; + addr = r4 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1d25c; + continue; + } + case 0x1d288: + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1d2a8: + r4 = r16 + r0; + r5 = r16 + 8; + /* Next insn is delay slot */ + r31 = 0x1d2b8; + pc = 0x1c200; + run_1c200(); + return; + case 0x1d2b8: + /* Next insn is delay slot */ + pc = 0x1d240; continue; - case 0x180b4: - r4 = 7 << 16; - r4 = r4 + -6876; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x180c8; - pc=0x1b200; - run_1b200(); return; - case 0x180c8: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r18; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x18034; - continue; - case 0x18200: - pc=0x18200; + case 0x1d2c0: + r18 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r2 = (r18 & 0xffffffffL) < (128 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1d2d8; + continue; + } + r18 = r0 + 128; + case 0x1d2d8: + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r18; + r4 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x1d2ec; + pc = 0x44600; + run_44600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x1d2ec: + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + r3 = r18 + r0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1d22c; + continue; + } + /* Next insn is delay slot */ + r31 = 0x1d304; + pc = 0x1c000; + run_1c000(); + return; + case 0x1d304: + case 0x1d400: + pc = 0x1d400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_18200() throws ExecutionException { /* 0x18200 - 0x18400 */ + + private final void run_1d400() throws ExecutionException { /* 0x1d400 - 0x1d600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x18200: - r29 = r29 + -24; - r4 = r0 + 12; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x18218; - pc=0x3e800; - run_3e800(); return; - case 0x18218: - r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x18260; - continue; - } - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - r4 = r0 + 1024; - r2 = r0 + 1024; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x1823c; - pc=0x3e800; - run_3e800(); return; - case 0x1823c: - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x18260; - continue; - } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff] = r16; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x1d400: + r2 = r4 & 255; + /* Next insn is delay slot */ + pc = r31; return; - case 0x18260: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r4 = 7 << 16; - r7 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r4 = r4 + -7800; - r5 = r0 + 1; - r6 = r0 + 37; - /* Next insn is delay slot */ - r31=0x18280; - pc=0x3dc00; - run_3dc00(); return; - case 0x18280: - r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x1828c; - pc=0x38e00; - run_38e00(); return; - case 0x1828c: - case 0x18400: - pc=0x18400; + case 0x1d600: + pc = 0x1d600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_18400() throws ExecutionException { /* 0x18400 - 0x18600 */ + + private final void run_1d600() throws ExecutionException { /* 0x1d600 - 0x1d800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x18400: - r2 = r4 << 24; - r2 = r2 >> 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x18600: - pc=0x18600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_18600() throws ExecutionException { /* 0x18600 - 0x18800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x18600: - r4 = r4 << 24; - r4 = r4 >> 24; - r3 = r4 & 255; - r2 = r3 + -65; - r2 = (r2&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1864c; - continue; - } - r2 = r3 + -97; - r2 = (r2&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x18640; - continue; - } - r3 = r3 + -32; - r2 = r3 << 24; - r2 = r2 >> 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x18640: - r2 = r4 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1864c: - r2 = r0 + -128; - r2 = r4 | r2; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x18800: - pc=0x18800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_18800() throws ExecutionException { /* 0x18800 - 0x18a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x18800: - r2 = readPages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x1d600: + r2 = readPages[(r28 + -32696) >>> 12][((r28 + -32696) >>> 2) & 0x3ff]; r4 = r4 & 255; r4 = r2 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r2 = tmp; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x18a00: - pc=0x18a00; + case 0x1d800: + pc = 0x1d800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_18a00() throws ExecutionException { /* 0x18a00 - 0x18c00 */ + + private final void run_1d800() throws ExecutionException { /* 0x1d800 - 0x1da00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x18a00: - r4 = r4 << 24; - r4 = r4 >> 24; - r3 = r4 & 255; - r2 = r3 + -97; - r2 = (r2&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x18a64; + for (;;) { + switch (pc) { + case 0x1d800: + r4 = r4 & 255; + r2 = r4 + -65; + r2 = (r2 & 0xffffffffL) < (26 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1d840; continue; } - r2 = r3 + -91; - r2 = (r2&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x18a50; + r2 = r4 + -97; + r2 = (r2 & 0xffffffffL) < (26 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1d834; + continue; + } + r4 = r4 + -32; + r2 = r4 & 255; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1d834: + r2 = r4 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1d840: + r2 = r4 | 128; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1da00: + pc = 0x1da00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1da00() throws ExecutionException { /* 0x1da00 - 0x1dc00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1da00: + r4 = r4 & 255; + r2 = r4 + -97; + r2 = (r2 & 0xffffffffL) < (26 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1da58; + continue; + } + r2 = r4 + -91; + r2 = (r2 & 0xffffffffL) < (5 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1da48; continue; } r2 = r0 + 96; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x18a78; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x1da68; continue; } r2 = r0 + 64; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x18a84; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x1da74; continue; } r2 = r4 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x18a50: - r3 = r3 + -64; - r2 = r3 << 24; - r2 = r2 >> 24; - /* Next insn is delay slot */ - pc=r31; + case 0x1da48: + r4 = r4 + -64; + r2 = r4 & 255; + /* Next insn is delay slot */ + pc = r31; return; - case 0x18a64: - r3 = r3 + -96; - r2 = r3 << 24; - r2 = r2 >> 24; - /* Next insn is delay slot */ - pc=r31; + case 0x1da58: + r4 = r4 + -96; + r2 = r4 & 255; + /* Next insn is delay slot */ + pc = r31; return; - case 0x18a78: + case 0x1da68: r2 = r0 + 64; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x18a84: + case 0x1da74: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x18c00: - pc=0x18c00; + case 0x1dc00: + pc = 0x1dc00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_18c00() throws ExecutionException { /* 0x18c00 - 0x18e00 */ + + private final void run_1dc00() throws ExecutionException { /* 0x1dc00 - 0x1de00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x18c00: - r2 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; - r4 = r4 << 24; - r25 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r4 >> 24; - /* Next insn is delay slot */ - pc=r25; + for (;;) { + switch (pc) { + case 0x1dc00: + r2 = readPages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff]; + r4 = r4 & 255; + r25 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r25; return; - case 0x18e00: - pc=0x18e00; + case 0x1de00: + pc = 0x1de00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_18e00() throws ExecutionException { /* 0x18e00 - 0x19000 */ + + private final void run_1de00() throws ExecutionException { /* 0x1de00 - 0x1e000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x18e00: - r2 = r28 + -32348; - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x1de00: + r2 = r28 + -32700; + writePages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = r31; return; - case 0x19000: - pc=0x19000; + case 0x1e000: + pc = 0x1e000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_19000() throws ExecutionException { /* 0x19000 - 0x19200 */ + + private final void run_1e000() throws ExecutionException { /* 0x1e000 - 0x1e200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x19000: - r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - r17 = r4 + r0; - r4 = r5 + r0; - r5 = 7 << 16; - r5 = r5 + 12832; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x19028; - pc=0x3b800; - run_3b800(); return; - case 0x19028: - r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x19084; - continue; - } - r4 = r17 + r0; - r5 = r0 + 1; + for (;;) { + switch (pc) { + case 0x1e000: + r29 = r29 + -24; + r7 = r5 + r0; r6 = r0 + 256; - r7 = r2 + r0; - /* Next insn is delay slot */ - r31=0x1904c; - pc=0x3c600; - run_3c600(); return; - case 0x1904c: + r5 = r0 + 1; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x1e01c; + pc = 0x42800; + run_42800(); + return; + case 0x1e01c: r3 = r0 + 256; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x19068; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x1e044; continue; } - r4 = 7 << 16; - r4 = r4 + -7760; - /* Next insn is delay slot */ - r31=0x19068; - pc=0x1b000; - run_1b000(); return; - case 0x19068: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r4 = r16 + r0; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x39200; - run_39200(); return; - case 0x19084: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -6824; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x1b000; - run_1b000(); return; - case 0x19200: - pc=0x19200; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28548; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x1e044: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1e200: + pc = 0x1e200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_19200() throws ExecutionException { /* 0x19200 - 0x19400 */ + + private final void run_1e200() throws ExecutionException { /* 0x1e200 - 0x1e400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x19200: - r4 = readPages[(r28+-30756)>>>12][((r28+-30756)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x1e200: r29 = r29 + -32; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x19240; - continue; - } - case 0x19214: - r6 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; + r4 = 6 << 16; + r6 = 6 << 16; + r4 = r4 + -24524; r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x19224; - pc=0x31000; - run_31000(); return; - case 0x19224: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x19260; + r6 = r6 + -24536; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x1e224; + pc = 0x38c00; + run_38c00(); + return; + case 0x1e224: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1e240; continue; } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - case 0x19230: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + case 0x1e230: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x19240: - r5 = 7 << 16; - r4 = r28 + -30756; - r5 = r5 + 6008; - /* Next insn is delay slot */ - r31=0x19254; - pc=0x30e00; - run_30e00(); return; - case 0x19254: - r4 = readPages[(r28+-30756)>>>12][((r28+-30756)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x19214; - continue; - case 0x19260: - r4 = 7 << 16; - r4 = r4 + -7728; - /* Next insn is delay slot */ - r31=0x19270; - pc=0x1b000; - run_1b000(); return; - case 0x19270: + case 0x1e240: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28580; + /* Next insn is delay slot */ + r31 = 0x1e254; + pc = 0x20600; + run_20600(); + return; + case 0x1e254: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x19230; + /* Next insn is delay slot */ + pc = 0x1e230; continue; - case 0x19400: - pc=0x19400; + case 0x1e400: + pc = 0x1e400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_19400() throws ExecutionException { /* 0x19400 - 0x19600 */ + + private final void run_1e400() throws ExecutionException { /* 0x1e400 - 0x1e600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x19400: - r29 = r29 + -88; - writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r19; - r19 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r29 + 40; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r16; + for (;;) { + switch (pc) { + case 0x1e400: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r3 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r29 = r29 + -24; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x1e428; + pc = 0x21000; + run_21000(); + return; + case 0x1e428: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r5 = tmp; + r2 = r0 + 125; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x1e450; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = 5 << 16; + r4 = r4 + 28612; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x21a00; + run_21a00(); + return; + case 0x1e450: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1e600: + pc = 0x1e600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1e600() throws ExecutionException { /* 0x1e600 - 0x1e800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1e600: + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r29 = r29 + -48; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1e6b4; + continue; + } + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r4 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + writePages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + r31 = 0x1e634; + pc = 0x23400; + run_23400(); + return; + case 0x1e634: + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x1e640; + pc = 0x1a800; + run_1a800(); + return; + case 0x1e640: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1e698; + continue; + } + case 0x1e650: + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1e67c; + continue; + } + r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1e67c: + r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r2 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1e698: + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x1e6ac; + pc = 0x20600; + run_20600(); + return; + case 0x1e6ac: + /* Next insn is delay slot */ + pc = 0x1e650; + continue; + case 0x1e6b4: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1e800: + pc = 0x1e800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1e800() throws ExecutionException { /* 0x1e800 - 0x1ea00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1e800: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r29 = r29 + -56; + r2 = r0 + 32; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + r22 = r4 + r0; + r18 = r5 + r0; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x1e9a0; + continue; + } + case 0x1e83c: + r17 = 6 << 16; + r4 = r17 + -24536; + /* Next insn is delay slot */ + r31 = 0x1e84c; + pc = 0x1c400; + run_1c400(); + return; + case 0x1e84c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r18) { + /* Next insn is delay slot */ + pc = 0x1e918; + continue; + } + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1e918; + continue; + } + r16 = r17 + -24536; + r21 = r16 + r0; + r19 = r0 + 34; + r20 = r0 + 39; + /* Next insn is delay slot */ + pc = 0x1e89c; + continue; + case 0x1e87c: + /* Next insn is delay slot */ + r31 = 0x1e884; + pc = 0x23400; + run_23400(); + return; + case 0x1e884: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r18) { + /* Next insn is delay slot */ + pc = 0x1e918; + continue; + } + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1e918; + continue; + } + case 0x1e89c: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r3 == r4) { + /* Next insn is delay slot */ + pc = 0x1e964; + continue; + } + case 0x1e8b0: + r4 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r5 = r3 + 1; + r3 = r4 + r3; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r5; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r4 = tmp; + if (r4 == r19) { + /* Next insn is delay slot */ + pc = 0x1e8dc; + continue; + } + if (r4 != r20) { + /* Next insn is delay slot */ + pc = 0x1e87c; + continue; + } + case 0x1e8dc: + /* Next insn is delay slot */ + r31 = 0x1e8e4; + pc = 0x24200; + run_24200(); + return; + case 0x1e8e4: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r3 == r4) { + /* Next insn is delay slot */ + pc = 0x1e980; + continue; + } + case 0x1e8f8: + r4 = r3 + 1; + r5 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r4; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r4 = tmp; + r3 = r5 + r3; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1e87c; + continue; + } + case 0x1e918: + r4 = r17 + -24536; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x1e928; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x1e928: + r4 = r17 + -24536; + /* Next insn is delay slot */ + r31 = 0x1e934; + pc = 0x1c800; + run_1c800(); + return; + case 0x1e934: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + writePages[(r22 + 0) >>> 12][((r22 + 0) >>> 2) & 0x3ff] = r2; + r22 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r29 = r29 + 56; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1e964: + r4 = r21 + r0; + /* Next insn is delay slot */ + r31 = 0x1e970; + pc = 0x1c600; + run_1c600(); + return; + case 0x1e970: + r3 = readPages[(r21 + 4) >>> 12][((r21 + 4) >>> 2) & 0x3ff]; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x1e8b0; + continue; + case 0x1e980: + r4 = r21 + r0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x1e990; + pc = 0x1c600; + run_1c600(); + return; + case 0x1e990: + r3 = readPages[(r21 + 4) >>> 12][((r21 + 4) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x1e8f8; + continue; + case 0x1e9a0: + /* Next insn is delay slot */ + r31 = 0x1e9a8; + pc = 0x23400; + run_23400(); + return; + case 0x1e9a8: + /* Next insn is delay slot */ + pc = 0x1e83c; + continue; + case 0x1ea00: + pc = 0x1ea00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1ea00() throws ExecutionException { /* 0x1ea00 - 0x1ec00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1ea00: + r29 = r29 + -32; + r4 = r29 + 20; + r5 = r0 + r0; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x1ea1c; + pc = 0x25000; + run_25000(); + return; + case 0x1ea1c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1ea3c; + continue; + } + case 0x1ea24: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1ea3c: + r5 = 6 << 16; + r6 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r29 + 16; + r5 = r5 + -11392; + r7 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x1ea58; + pc = 0x39000; + run_39000(); + return; + case 0x1ea58: + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1ea24; + continue; + } + r16 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + writePages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1eaa8; + continue; + } + case 0x1ea84: + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r4 = r16 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x1ea94; + return; + case 0x1ea94: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1eaa8: + r4 = 5 << 16; + r4 = r4 + 28636; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x1eabc; + pc = 0x21a00; + run_21a00(); + return; + case 0x1eabc: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x1ea84; + continue; + case 0x1ec00: + pc = 0x1ec00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1ec00() throws ExecutionException { /* 0x1ec00 - 0x1ee00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1ec00: + r29 = r29 + -104; + writePages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff] = r19; + r19 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r3 = r29 + 48; + writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = r16; r5 = r19 + r0; r16 = r4 + r0; r6 = r0 + 20; r4 = r3 + r0; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r18; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r17; - /* Next insn is delay slot */ - r31=0x19438; - pc=0x48fdc; - run_48e00(); return; - case 0x19438: + writePages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 96) >>> 12][((r29 + 96) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff] = r17; + /* Next insn is delay slot */ + r31 = 0x1ec40; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x1ec40: r3 = r2 + r0; + writePages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff] = r3; + r5 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; r2 = r0 + 1; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r2; - r2 = r0 + 80; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; - r5 = r29 + 16; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r3; + r3 = (r5 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r2; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x1ed38; + continue; + } + r2 = r0 + 2; + if (r5 != r2) { + /* Next insn is delay slot */ + pc = 0x1ecfc; + continue; + } + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1ed0c; + continue; + } + r21 = r16 + 48; + r20 = r16 + 16; + r6 = r0 + r0; + r17 = r29 + 16; + /* Next insn is delay slot */ + pc = 0x1eca0; + continue; + case 0x1ec9c: + r6 = r18 + r0; + case 0x1eca0: + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r4 = r20 + r0; + r2 = readPages[(r2 + 36) >>> 12][((r2 + 36) >>> 2) & 0x3ff]; + r5 = r17 + r0; + r18 = r6 + 1; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x1ecbc; + return; + case 0x1ecbc: + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r5 = r17 + r0; + r6 = r0 + 3; + /* Next insn is delay slot */ + r31 = 0x1ecd0; + pc = 0x37a00; + run_37a00(); + return; + case 0x1ecd0: + r4 = r21 + r0; + /* Next insn is delay slot */ + r31 = 0x1ecdc; + pc = 0x1e400; + run_1e400(); + return; + case 0x1ecdc: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1ec9c; + continue; + } + /* Next insn is delay slot */ + pc = 0x1ed0c; + continue; + case 0x1ecfc: + r4 = 5 << 16; + r4 = r4 + 28656; + /* Next insn is delay slot */ + r31 = 0x1ed0c; + pc = 0x21a00; + run_21a00(); + return; + case 0x1ed0c: + r31 = readPages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 96) >>> 12][((r29 + 96) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + writePages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff] = r19; + r19 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r29 = r29 + 104; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1ed38: + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + r3 = 6 << 16; + r2 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r17 = r29 + 16; + r3 = r3 + -26200; + r5 = r17 + r0; r6 = r0 + 1; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x19474; - pc=0x2f600; - run_2f600(); return; - case 0x19474: - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x19540; - continue; - } - r2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1951c; - continue; - } - r18 = 7 << 16; - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = r0 + 125; - r18 = r18 + -7708; - case 0x194a4: - r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = r3 + r2; - r5 = r29 + 16; - r6 = r0 + 1; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x194c4; - pc=0x2f600; - run_2f600(); return; - case 0x194c4: - r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x194e8; - pc=0x1a400; - run_1a400(); return; - case 0x194e8: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - if(r5 == r17) { - /* Next insn is delay slot */ - pc=0x19504; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r3; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x1ed70; + pc = 0x37a00; + run_37a00(); + return; + case 0x1ed70: + r5 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x1ee44; + run_1ee00(); + return; + } + case 0x1ed80: + r18 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r4 = r17 + r0; + r5 = r18 + r0; + r6 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x1ed98; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x1ed98: + r2 = r0 + 1; + writePages[(r18 + 36) >>> 12][((r18 + 36) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r20 = r16 + 48; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1edcc; continue; } + /* Next insn is delay slot */ + pc = 0x1ee18; + run_1ee00(); + return; + case 0x1edc4: + r18 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x1edcc: r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x19504; - pc=0x1b800; - run_1b800(); return; - case 0x19504: - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r3 = r2 < r3 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x194a4; - continue; - } - case 0x1951c: - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r18 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r16 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r19; - r19 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; + r5 = r17 + r0; + r6 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x1ede0; + pc = 0x4d7e0; + run_4d600(); return; - case 0x19540: - r18 = 7 << 16; - r17 = r0 + 125; - r18 = r18 + -7708; - case 0x1954c: - r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x19570; - pc=0x1a400; - run_1a400(); return; - case 0x19570: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - if(r5 == r17) { - /* Next insn is delay slot */ - pc=0x1958c; - continue; - } - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x1958c; - pc=0x1b800; - run_1b800(); return; - case 0x1958c: - r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + case 0x1ede0: + r4 = r20 + r0; + /* Next insn is delay slot */ + r31 = 0x1edec; + pc = 0x1e400; + run_1e400(); + return; + case 0x1edec: + r3 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; r2 = r3 + r2; - r5 = r29 + 16; - r6 = r0 + 1; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x195b0; - pc=0x2f600; - run_2f600(); return; - case 0x195b0: - r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - r2 = r3 + r2; - r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x1954c; - continue; - } - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r18 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r16 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r19; - r19 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; + case 0x1ee00: + pc = 0x1ee00; return; - case 0x19600: - pc=0x19600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_19600() throws ExecutionException { /* 0x19600 - 0x19800 */ + + private final void run_1ee00() throws ExecutionException { /* 0x1ee00 - 0x1f000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x19600: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r29 = r29 + -40; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; + for (;;) { + switch (pc) { + case 0x1ee00: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1edc4; + run_1ec00(); + return; + } + case 0x1ee18: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r2 = r0 + 1; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x1ed0c; + run_1ec00(); + return; + } + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r5 = r17 + r0; + r6 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x1ee3c; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x1ee3c: + /* Next insn is delay slot */ + pc = 0x1ed0c; + run_1ec00(); + return; + case 0x1ee44: + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x1ee50; + pc = 0x37c00; + run_37c00(); + return; + case 0x1ee50: + /* Next insn is delay slot */ + pc = 0x1ed80; + run_1ec00(); + return; + case 0x1f000: + pc = 0x1f000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1f000() throws ExecutionException { /* 0x1f000 - 0x1f200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1f000: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r29 = r29 + -32; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; r17 = r5 << 24; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r17 = r17 >> 24; r16 = r4 + r0; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r0; - if(r2 == r17) { - /* Next insn is delay slot */ - pc=0x196b8; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r0; + if (r2 == r17) { + /* Next insn is delay slot */ + pc = 0x1f0bc; continue; } - /* Next insn is delay slot */ - r31=0x1964c; - pc=0x1f400; - run_1f400(); return; - case 0x1964c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x196b8; - continue; - } - r18 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = 7 << 16; - r19 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; - r5 = r5 + -7684; - r4 = r19 + r0; - /* Next insn is delay slot */ - r31=0x19670; - pc=0x42c00; - run_42c00(); return; - case 0x19670: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x196d8; - continue; - } - case 0x19678: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 32; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x19704; - continue; - } - case 0x19688: - r4 = r17 + r0; - writePages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x19698; - pc=0x1d800; - run_1d800(); return; - case 0x19698: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x196a8; - pc=0x17c00; - run_17c00(); return; - case 0x196a8: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x196b4; - pc=0x17a00; - run_17a00(); return; - case 0x196b4: - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - case 0x196b8: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x1f048; + pc = 0x25400; + run_25400(); return; - case 0x196d8: - r5 = 7 << 16; - r4 = r19 + r0; - r5 = r5 + -7676; - /* Next insn is delay slot */ - r31=0x196ec; - pc=0x42c00; - run_42c00(); return; - case 0x196ec: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x19718; + case 0x1f048: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1f0bc; + continue; + } + r2 = 6 << 16; + r18 = readPages[(r2 + -24536) >>> 12][((r2 + -24536) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r18 + r0; + r5 = r5 + 28672; + /* Next insn is delay slot */ + r31 = 0x1f06c; + pc = 0x47e00; + run_47e00(); + return; + case 0x1f06c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1f098; + continue; + } + r5 = 5 << 16; + r4 = r18 + r0; + r5 = r5 + 28680; + /* Next insn is delay slot */ + r31 = 0x1f088; + pc = 0x47e00; + run_47e00(); + return; + case 0x1f088: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1f0d8; continue; } r2 = r0 + 1; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x19678; - continue; - case 0x19704: - /* Next insn is delay slot */ - r31=0x1970c; - pc=0x1c000; - run_1c000(); return; - case 0x1970c: - r18 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x19688; - continue; - case 0x19718: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -6980; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=0x1b000; - run_1b000(); return; - case 0x19800: - pc=0x19800; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + case 0x1f098: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r4 = r16 + 8; + r5 = r17 + r0; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x1e800; + run_1e800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x1f0bc: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1f0d8: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x1f200: + pc = 0x1f200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_19800() throws ExecutionException { /* 0x19800 - 0x19a00 */ + + private final void run_1f200() throws ExecutionException { /* 0x1f200 - 0x1f400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x19800: - r29 = r29 + -88; - writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r20; - r20 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r29 + 40; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r16; - r5 = r20 + r0; + for (;;) { + switch (pc) { + case 0x1f200: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r4 = r4 + 8; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r5 = r0 + 123; + writePages[(r4 + -8) >>> 12][((r4 + -8) >>> 2) & 0x3ff] = r2; + writePages[(r4 + -4) >>> 12][((r4 + -4) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x1e800; + run_1e800(); + return; + case 0x1f400: + pc = 0x1f400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_1f400() throws ExecutionException { /* 0x1f400 - 0x1f600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x1f400: + r29 = r29 + -64; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r19; + r19 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r3 = r29 + 16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r16; + r5 = r19 + r0; r16 = r4 + r0; r6 = r0 + 20; r4 = r3 + r0; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r19; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r18; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r17; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x1983c; - pc=0x48fdc; - run_48e00(); return; - case 0x1983c: + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x1f438; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x1f438: r3 = r2 + r0; - r19 = 7 << 16; r2 = r0 + 1; - r18 = 7 << 16; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r2; - writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r3; - r2 = r3 + r0; - r19 = r19 + -6980; - r17 = r0 + 125; - r18 = r18 + -7708; - case 0x19864: - r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x198cc; - continue; - } - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - r31=0x19888; - pc=0x1c000; - run_1c000(); return; - case 0x19888: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x19894; - pc=0x16000; - run_16000(); return; - case 0x19894: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x199d8; - continue; - } - case 0x198a4: - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x199a8; - continue; - } - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - case 0x198c0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1997c; - continue; - } - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x198cc: - r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x198ec; - pc=0x1a400; - run_1a400(); return; - case 0x198ec: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - if(r5 == r17) { - /* Next insn is delay slot */ - pc=0x19908; - continue; - } + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + writePages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff] = r3; + r18 = r16 + 12; + r17 = r16 + 20; + /* Next insn is delay slot */ + pc = 0x1f478; + continue; + case 0x1f458: r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x19908; - pc=0x1b800; - run_1b800(); return; - case 0x19908: - r2 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x19970; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - r31=0x19930; - pc=0x1c000; - run_1c000(); return; - case 0x19930: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x1993c; - pc=0x16000; - run_16000(); return; - case 0x1993c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x199ec; - continue; - } - case 0x1994c: - r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x199bc; - continue; - } - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1997c; - continue; - } - case 0x19970: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x19864; - continue; - case 0x1997c: - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r19 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r18 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r17 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r16 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r20; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r20 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x1f464; + pc = 0x1e400; + run_1e400(); return; - case 0x199a8: - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x198c0; - continue; - case 0x199bc: - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x19970; - continue; - } - /* Next insn is delay slot */ - pc=0x1997c; - continue; - case 0x199d8: - r4 = r19 + r0; - /* Next insn is delay slot */ - r31=0x199e4; - pc=0x1b200; - run_1b200(); return; - case 0x199e4: - /* Next insn is delay slot */ - pc=0x198a4; - continue; - case 0x199ec: - r4 = r19 + r0; - /* Next insn is delay slot */ - r31=0x199f8; - pc=0x1b200; - run_1b200(); return; - case 0x199f8: - /* Next insn is delay slot */ - pc=0x1994c; - continue; - case 0x19a00: - pc=0x19a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_19a00() throws ExecutionException { /* 0x19a00 - 0x19c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x19a00: - r29 = r29 + -24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - r16 = r4 + r0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x19a58; - continue; - } - /* Next insn is delay slot */ - r31=0x19a20; - pc=0x1d400; - run_1d400(); return; - case 0x19a20: - /* Next insn is delay slot */ - r31=0x19a28; - pc=0x1c000; - run_1c000(); return; - case 0x19a28: - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x19a94; - continue; - } - case 0x19a34: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x19aac; - continue; - } - case 0x19a44: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x19a58: - /* Next insn is delay slot */ - r31=0x19a60; - pc=0x1a400; - run_1a400(); return; - case 0x19a60: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 125; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x19a20; - continue; - } - r4 = 7 << 16; - r4 = r4 + -6912; - /* Next insn is delay slot */ - r31=0x19a80; - pc=0x1b200; - run_1b200(); return; - case 0x19a80: - /* Next insn is delay slot */ - r31=0x19a88; - pc=0x1c000; - run_1c000(); return; - case 0x19a88: - r3 = r0 + 32; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x19a34; - continue; - } - case 0x19a94: - /* Next insn is delay slot */ - r31=0x19a9c; - pc=0x1c000; - run_1c000(); return; - case 0x19a9c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x19a44; - continue; - } - case 0x19aac: - /* Next insn is delay slot */ - r31=0x19ab4; - pc=0x1f400; - run_1f400(); return; - case 0x19ab4: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x19b24; - continue; - } - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r5 = r5 + -7668; - /* Next insn is delay slot */ - r31=0x19ad4; - pc=0x42c00; - run_42c00(); return; - case 0x19ad4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x19b70; - continue; - } - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x19b88; - continue; - } - case 0x19aec: - r3 = r0 + 123; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x19b08; - continue; - } - r4 = 7 << 16; - r4 = r4 + -6860; - /* Next insn is delay slot */ - r31=0x19b08; - pc=0x1b200; - run_1b200(); return; - case 0x19b08: - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x19b38; - continue; - } - r4 = r0 + r0; - /* Next insn is delay slot */ - r31=0x19b1c; - pc=0x1d400; - run_1d400(); return; - case 0x19b1c: - /* Next insn is delay slot */ - r31=0x19b24; - pc=0x1c000; - run_1c000(); return; - case 0x19b24: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=0x1ce00; - run_1ce00(); return; - case 0x19b38: - /* Next insn is delay slot */ - r31=0x19b40; - pc=0x1a400; - run_1a400(); return; - case 0x19b40: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 125; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x19b1c; - continue; - } - r4 = 7 << 16; - r4 = r4 + -6912; - /* Next insn is delay slot */ - r31=0x19b60; - pc=0x1b200; - run_1b200(); return; - case 0x19b60: - /* Next insn is delay slot */ - r31=0x19b68; - pc=0x1c000; - run_1c000(); return; - case 0x19b68: - /* Next insn is delay slot */ - pc=0x19b24; - continue; - case 0x19b70: - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x19b80; - pc=0x1b000; - run_1b000(); return; - case 0x19b80: - /* Next insn is delay slot */ - pc=0x19b24; - continue; - case 0x19b88: - /* Next insn is delay slot */ - r31=0x19b90; - pc=0x1c000; - run_1c000(); return; - case 0x19b90: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x19aec; - continue; - case 0x19c00: - pc=0x19c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_19c00() throws ExecutionException { /* 0x19c00 - 0x19e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x19c00: - r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; - r29 = r29 + -32; - r2 = r2 < 3 ? 1 : 0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r16 = r4 + r0; - r17 = r5 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x19c80; - continue; - } - case 0x19c28: + case 0x1f464: r4 = r17 + r0; - r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x19c38; - pc=0x1be00; - run_1be00(); return; - case 0x19c38: - /* Next insn is delay slot */ - r31=0x19c40; - pc=0x1a400; - run_1a400(); return; - case 0x19c40: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 13; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x19c60; + /* Next insn is delay slot */ + r31 = 0x1f470; + pc = 0x1e600; + run_1e600(); + return; + case 0x1f470: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1f48c; continue; } - r4 = 7 << 16; - r4 = r4 + -7632; - /* Next insn is delay slot */ - r31=0x19c60; - pc=0x1b000; - run_1b000(); return; - case 0x19c60: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x39200; - run_39200(); return; - case 0x19c80: - r4 = 7 << 16; - r4 = r4 + -7660; - /* Next insn is delay slot */ - r31=0x19c90; - pc=0x3fc00; - run_3fc00(); return; - case 0x19c90: - /* Next insn is delay slot */ - pc=0x19c28; - continue; - case 0x19e00: - pc=0x19e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_19e00() throws ExecutionException { /* 0x19e00 - 0x1a000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x19e00: - r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; - r29 = r29 + -40; - r6 = r5 + r0; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x19e64; - continue; - } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r5 = r5 + -7568; - /* Next insn is delay slot */ - r31=0x19e54; - pc=0x3bc00; - run_3bc00(); return; - case 0x19e54: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x19e64: - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r8 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r5 = r5 + -7596; - r6 = r8 + r0; - /* Next insn is delay slot */ - r31=0x19ea0; - pc=0x3bc00; - run_3bc00(); return; - case 0x19ea0: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1a000: - pc=0x1a000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1a000() throws ExecutionException { /* 0x1a000 - 0x1a200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1a000: - r29 = r29 + -24; - r4 = r0 + 1; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x1a014; - pc=0x11800; - run_11800(); return; - case 0x1a014: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x1a020; - pc=0x38e00; - run_38e00(); return; - case 0x1a020: - case 0x1a200: - pc=0x1a200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1a200() throws ExecutionException { /* 0x1a200 - 0x1a400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1a200: - r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; - r29 = r29 + -40; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a28c; - continue; - } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r6 = 7 << 16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r2 = 7 << 16; - r2 = r2 + -6980; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - r5 = r5 + -7568; - r6 = r6 + 1168; - /* Next insn is delay slot */ - r31=0x1a260; - pc=0x3bc00; - run_3bc00(); return; - case 0x1a260: - r2 = readPages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff]; - r3 = readPages[(r28+-32340)>>>12][((r28+-32340)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff] = r2; - r2 = r2 < r3 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1a2dc; - continue; - } - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1a28c: - r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = 7 << 16; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r3 = r3 + 1168; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r2 = 7 << 16; - r2 = r2 + -6980; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - r5 = r5 + -7596; - /* Next insn is delay slot */ - r31=0x1a2d4; - pc=0x3bc00; - run_3bc00(); return; - case 0x1a2d4: - /* Next insn is delay slot */ - pc=0x1a260; - continue; - case 0x1a2dc: - /* Next insn is delay slot */ - r31=0x1a2e4; - pc=0x1a000; - run_1a000(); return; - case 0x1a2e4: - case 0x1a400: - pc=0x1a400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1a400() throws ExecutionException { /* 0x1a400 - 0x1a600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1a400: - r29 = r29 + -72; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r31; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r23; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r22; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r21; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r20; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r19; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r18; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r17; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x1a430; - pc=0x1c000; - run_1c000(); return; - case 0x1a430: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r0 + 125; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1a4f8; - continue; - } - r3 = r0 + 13; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1a4f8; - continue; - } - r21 = 7 << 16; - r20 = 7 << 16; - r23 = 7 << 16; - r21 = r21 + -7236; - r20 = r20 + -6980; - r22 = 7 << 16; - r19 = 7 << 16; - r23 = r23 + -7524; - case 0x1a46c: - r4 = r0 + r0; - /* Next insn is delay slot */ - r31=0x1a478; - pc=0x31e00; - run_31e00(); return; - case 0x1a478: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r16 = r0 + r0; - case 0x1a480: - r2 = r2 & 255; - r3 = (r2&0xffffffffL) < (47&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1a75c; - run_1a600(); return; - } - r4 = 7 << 16; - r3 = r2 << 2; - r4 = r4 + -7424; - r3 = r4 + r3; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r3; - return; - case 0x1a4b0: - r16 = r16 | 1; - case 0x1a4b4: - /* Next insn is delay slot */ - r31=0x1a4bc; - pc=0x1c000; - run_1c000(); return; - case 0x1a4bc: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a480; - continue; - } - case 0x1a4cc: - /* Next insn is delay slot */ - r31=0x1a4d4; - pc=0x28400; - run_28400(); return; - case 0x1a4d4: - /* Next insn is delay slot */ - r31=0x1a4dc; - pc=0x1c000; - run_1c000(); return; - case 0x1a4dc: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r0 + 125; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1a4f8; - continue; - } - r3 = r0 + 13; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x1a46c; - continue; - } - case 0x1a4f8: - r31 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r23 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r22 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r21 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r20 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r19 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r18 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 72; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1a528: - r2 = r16 & 2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a6c4; - run_1a600(); return; - } - r16 = r16 | 2; - /* Next insn is delay slot */ - r31=0x1a540; - pc=0x1c000; - run_1c000(); return; - case 0x1a540: - /* Next insn is delay slot */ - r31=0x1a548; - pc=0x1ec00; - run_1ec00(); return; - case 0x1a548: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a810; - run_1a800(); return; - } - case 0x1a550: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - case 0x1a558: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a480; - continue; - } - /* Next insn is delay slot */ - pc=0x1a4cc; - continue; - case 0x1a568: - r2 = r16 & 2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a6c4; - run_1a600(); return; - } - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r16 = r16 | 2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - r2 = r0 + r0; - r18 = r0 + 45; - r17 = r0 + 45; - /* Next insn is delay slot */ - pc=0x1a5c0; - continue; - case 0x1a594: - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r2 + 1; - r2 = r3 + r2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1a5b0; - pc=0x1c000; - run_1c000(); return; - case 0x1a5b0: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - if(r2 != r17) { - /* Next insn is delay slot */ - pc=0x1a60c; - run_1a600(); return; - } - case 0x1a5bc: - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - case 0x1a5c0: - r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x1a594; - continue; - } - /* Next insn is delay slot */ - r31=0x1a5d8; - pc=0x17800; - run_17800(); return; - case 0x1a5d8: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r2 + 1; - r2 = r3 + r2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1a600; - pc=0x1c000; - run_1c000(); return; - case 0x1a600: - pc=0x1a600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1a600() throws ExecutionException { /* 0x1a600 - 0x1a800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1a600: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - if(r2 == r17) { - /* Next insn is delay slot */ - pc=0x1a5bc; - run_1a400(); return; - } - case 0x1a60c: - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x1a618; - pc=0x17c00; - run_17c00(); return; - case 0x1a618: - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r5 = r16 + r0; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r6 = r0 + r0; - r7 = r0 + 1; - /* Next insn is delay slot */ - r31=0x1a634; - pc=0x2f800; - run_2f800(); return; - case 0x1a634: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a480; - run_1a400(); return; - } - /* Next insn is delay slot */ - pc=0x1a4cc; - run_1a400(); return; - case 0x1a64c: - /* Next insn is delay slot */ - r31=0x1a654; - pc=0x1c000; - run_1c000(); return; - case 0x1a654: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r0 + 46; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1a680; - continue; - } - r2 = r2 & 255; - r2 = r2 + r21; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r2 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1a880; - run_1a800(); return; - } - case 0x1a680: - /* Next insn is delay slot */ - r31=0x1a688; - pc=0x20a00; - run_20a00(); return; - case 0x1a688: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a480; - run_1a400(); return; - } - /* Next insn is delay slot */ - pc=0x1a4cc; - run_1a400(); return; - case 0x1a6a0: - /* Next insn is delay slot */ - r31=0x1a6a8; - pc=0x1c000; - run_1c000(); return; - case 0x1a6a8: - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1a9cc; - run_1a800(); return; - } - case 0x1a6b4: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 61; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x1a99c; - run_1a800(); return; - } - case 0x1a6c4: - r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a83c; - run_1a800(); return; - } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r5 = r22 + -7568; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r20; - r6 = r19 + 1168; - /* Next insn is delay slot */ - r31=0x1a70c; - pc=0x3bc00; - run_3bc00(); return; - case 0x1a70c: - r2 = readPages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff]; - r3 = readPages[(r28+-32340)>>>12][((r28+-32340)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff] = r2; - r2 = r2 < r3 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1aac0; - run_1aa00(); return; - } - /* Next insn is delay slot */ - r31=0x1a730; - pc=0x1c800; - run_1c800(); return; - case 0x1a730: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x1a558; - run_1a400(); return; - case 0x1a73c: - /* Next insn is delay slot */ - r31=0x1a744; - pc=0x2e200; - run_2e200(); return; - case 0x1a744: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a480; - run_1a400(); return; - } - /* Next insn is delay slot */ - pc=0x1a4cc; - run_1a400(); return; - case 0x1a75c: - r2 = r21 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x1a6c4; - continue; - } - r2 = 7 << 16; - r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; - r17 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1a788; - pc=0x1ec00; - run_1ec00(); return; - case 0x1a788: - r4 = r2 + r0; - /* Next insn is delay slot */ - pc=r17; - r31=0x1a794; - return; - case 0x1a794: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a550; - run_1a400(); return; - } - r2 = r16 & 2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a9dc; - run_1a800(); return; - } - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r4 = r0 + -96; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r16 = r16 | 2; - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x1aa14; - run_1aa00(); return; - } - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a7e8; - continue; - } - r2 = r0 + -62; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x1aa04; - run_1aa00(); return; - } - case 0x1a7e8: - r4 = r0 + r0; - r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x1a7f8; - pc=0x2fc00; - run_2fc00(); return; - case 0x1a7f8: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - case 0x1a800: - pc=0x1a800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1a800() throws ExecutionException { /* 0x1a800 - 0x1aa00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1a800: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a480; - run_1a400(); return; - } - /* Next insn is delay slot */ - pc=0x1a4cc; - run_1a400(); return; - case 0x1a810: - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r5 = r16 + r0; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1a824; - pc=0x2fc00; - run_2fc00(); return; - case 0x1a824: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a480; - run_1a400(); return; - } - /* Next insn is delay slot */ - pc=0x1a4cc; - run_1a400(); return; - case 0x1a83c: - r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r3 = r19 + 1168; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r20; - r5 = r5 + -7596; - /* Next insn is delay slot */ - r31=0x1a878; - pc=0x3bc00; - run_3bc00(); return; - case 0x1a878: - /* Next insn is delay slot */ - pc=0x1a70c; - run_1a600(); return; - case 0x1a880: - r2 = r16 & 2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a9dc; - continue; - } - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + 43; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x1a8a0; - pc=0x17c00; - run_17c00(); return; - case 0x1a8a0: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 43; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x1a948; - continue; - } - r18 = r0 + 43; - r17 = r0 + 43; - /* Next insn is delay slot */ - pc=0x1a8ec; - continue; - case 0x1a8c0: - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r2 + 1; - r2 = r3 + r2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1a8dc; - pc=0x1c000; - run_1c000(); return; - case 0x1a8dc: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r17) { - /* Next insn is delay slot */ - pc=0x1a948; - continue; - } - case 0x1a8ec: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x1a8c0; - continue; - } - /* Next insn is delay slot */ - r31=0x1a910; - pc=0x17800; - run_17800(); return; - case 0x1a910: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r2 + 1; - r2 = r3 + r2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1a938; - pc=0x1c000; - run_1c000(); return; - case 0x1a938: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r17) { - /* Next insn is delay slot */ - pc=0x1a8ec; - continue; - } - case 0x1a948: - r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x1a954; - pc=0x30800; - run_30800(); return; - case 0x1a954: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x1a964; - pc=0x17c00; - run_17c00(); return; - case 0x1a964: - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r16 = r16 | 2; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r5 = r16 + r0; - r6 = r0 + r0; - r7 = r0 + r0; - /* Next insn is delay slot */ - r31=0x1a984; - pc=0x2f800; - run_2f800(); return; - case 0x1a984: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a480; - run_1a400(); return; - } - /* Next insn is delay slot */ - pc=0x1a4cc; - run_1a400(); return; - case 0x1a99c: - /* Next insn is delay slot */ - r31=0x1a9a4; - pc=0x1c000; - run_1c000(); return; - case 0x1a9a4: - /* Next insn is delay slot */ - r31=0x1a9ac; - pc=0x2de00; - run_2de00(); return; - case 0x1a9ac: - /* Next insn is delay slot */ - r31=0x1a9b4; - pc=0x1ce00; - run_1ce00(); return; - case 0x1a9b4: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a480; - run_1a400(); return; - } - /* Next insn is delay slot */ - pc=0x1a4cc; - run_1a400(); return; - case 0x1a9cc: - /* Next insn is delay slot */ - r31=0x1a9d4; - pc=0x1c000; - run_1c000(); return; - case 0x1a9d4: - /* Next insn is delay slot */ - pc=0x1a6b4; - run_1a600(); return; - case 0x1a9dc: - /* Next insn is delay slot */ - r31=0x1a9e4; - pc=0x1a200; - run_1a200(); return; - case 0x1a9e4: - /* Next insn is delay slot */ - r31=0x1a9ec; - pc=0x1c800; - run_1c800(); return; - case 0x1a9ec: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a480; - run_1a400(); return; - } - /* Next insn is delay slot */ - pc=0x1a4cc; - run_1a400(); return; - case 0x1aa00: - pc=0x1aa00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1aa00() throws ExecutionException { /* 0x1aa00 - 0x1ac00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1aa00: - case 0x1aa04: - addr=r5+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r4) { - /* Next insn is delay slot */ - pc=0x1a7e8; - run_1a600(); return; - } - case 0x1aa14: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1a7e8; - run_1a600(); return; - } - r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1aa78; - continue; - } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r6 = 7 << 16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r23; - r5 = r22 + -7568; - r6 = r6 + -7532; - /* Next insn is delay slot */ - r31=0x1aa70; - pc=0x3bc00; - run_3bc00(); return; - case 0x1aa70: - /* Next insn is delay slot */ - pc=0x1a7e8; - run_1a600(); return; - case 0x1aa78: - r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = 7 << 16; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r3 = r3 + -7532; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r23; - r5 = r5 + -7596; - /* Next insn is delay slot */ - r31=0x1aab8; - pc=0x3bc00; - run_3bc00(); return; - case 0x1aab8: - /* Next insn is delay slot */ - pc=0x1a7e8; - run_1a600(); return; - case 0x1aac0: - /* Next insn is delay slot */ - r31=0x1aac8; - pc=0x1a000; - run_1a000(); return; - case 0x1aac8: - case 0x1ac00: - pc=0x1ac00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1ac00() throws ExecutionException { /* 0x1ac00 - 0x1ae00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1ac00: - r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; - r29 = r29 + -40; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1ac68; - continue; - } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r6 = 7 << 16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r5 = r5 + -7568; - r6 = r6 + -7532; - /* Next insn is delay slot */ - r31=0x1ac58; - pc=0x3bc00; - run_3bc00(); return; - case 0x1ac58: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1ac68: - r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = 7 << 16; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r3 = r3 + -7532; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r5 = r5 + -7596; - /* Next insn is delay slot */ - r31=0x1aca8; - pc=0x3bc00; - run_3bc00(); return; - case 0x1aca8: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1ae00: - pc=0x1ae00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1ae00() throws ExecutionException { /* 0x1ae00 - 0x1b000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1ae00: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - r29 = r29 + -40; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1ae24; - continue; - } - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1ae24: - r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1ae84; - continue; - } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r6 = 7 << 16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r5 = r5 + -7568; - r6 = r6 + -7532; - /* Next insn is delay slot */ - r31=0x1ae74; - pc=0x3bc00; - run_3bc00(); return; - case 0x1ae74: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1ae84: - r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = 7 << 16; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r3 = r3 + -7532; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r5 = r5 + -7596; - /* Next insn is delay slot */ - r31=0x1aec4; - pc=0x3bc00; - run_3bc00(); return; - case 0x1aec4: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1b000: - pc=0x1b000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1b000() throws ExecutionException { /* 0x1b000 - 0x1b200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1b000: - r2 = readPages[(r28+-30748)>>>12][((r28+-30748)>>>2)&0x3ff]; - r29 = r29 + -40; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1b084; - continue; - } - r7 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r6 = 7 << 16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r5 = r5 + -7568; - r6 = r6 + 1168; - /* Next insn is delay slot */ - r31=0x1b058; - pc=0x3bc00; - run_3bc00(); return; - case 0x1b058: - r2 = readPages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff]; - r3 = readPages[(r28+-32340)>>>12][((r28+-32340)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff] = r2; - r2 = r2 < r3 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1b0cc; - continue; - } - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1b084: - r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r7 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = 7 << 16; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r3 = r3 + 1168; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = 7 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-30744)>>>12][((r28+-30744)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r5 = r5 + -7596; - /* Next insn is delay slot */ - r31=0x1b0c4; - pc=0x3bc00; - run_3bc00(); return; - case 0x1b0c4: - /* Next insn is delay slot */ - pc=0x1b058; - continue; - case 0x1b0cc: - /* Next insn is delay slot */ - r31=0x1b0d4; - pc=0x1a000; - run_1a000(); return; - case 0x1b0d4: - case 0x1b200: - pc=0x1b200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1b200() throws ExecutionException { /* 0x1b200 - 0x1b400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1b200: - r5 = 7 << 16; - r29 = r29 + -24; - r5 = r5 + -7476; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x1b218; - pc=0x19e00; - run_19e00(); return; - case 0x1b218: - r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x1b224; - pc=0x11800; - run_11800(); return; - case 0x1b224: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x1b230; - pc=0x38e00; - run_38e00(); return; - case 0x1b230: - case 0x1b400: - pc=0x1b400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1b400() throws ExecutionException { /* 0x1b400 - 0x1b600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1b400: - r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x1b410; - pc=0x3e800; - run_3e800(); return; - case 0x1b410: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1b428; - continue; - } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1b428: - r4 = 7 << 16; - r4 = r4 + -6876; - /* Next insn is delay slot */ - r31=0x1b438; - pc=0x1b200; - run_1b200(); return; - case 0x1b438: - case 0x1b600: - pc=0x1b600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1b600() throws ExecutionException { /* 0x1b600 - 0x1b800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1b600: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r29 = r29 + -24; - r3 = r0 + 32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1b66c; - continue; - } - case 0x1b618: - r3 = r0 + 123; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1b638; - continue; - } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1b638: - /* Next insn is delay slot */ - r31=0x1b640; - pc=0x1a400; - run_1a400(); return; - case 0x1b640: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 125; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x1b680; - continue; - } - /* Next insn is delay slot */ - r31=0x1b658; - pc=0x1c000; - run_1c000(); return; - case 0x1b658: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1b66c: - /* Next insn is delay slot */ - r31=0x1b674; - pc=0x1c000; - run_1c000(); return; - case 0x1b674: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x1b618; - continue; - case 0x1b680: - r4 = 7 << 16; - r4 = r4 + -6912; - /* Next insn is delay slot */ - r31=0x1b690; - pc=0x1b200; - run_1b200(); return; - case 0x1b690: - case 0x1b800: - pc=0x1b800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1b800() throws ExecutionException { /* 0x1b800 - 0x1ba00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1b800: - r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r17 = r5 + r0; - r16 = r4 + r0; - r5 = 7 << 16; - r4 = 7 << 16; - r4 = r4 + -7460; - r5 = r5 + -7532; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x1b830; - pc=0x19e00; - run_19e00(); return; - case 0x1b830: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r5 = r5 + -7432; - r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x1b84c; - pc=0x3bc00; - run_3bc00(); return; - case 0x1b84c: + case 0x1f478: r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x1b858; - pc=0x1b200; - run_1b200(); return; - case 0x1b858: - case 0x1ba00: - pc=0x1ba00; + /* Next insn is delay slot */ + r31 = 0x1f484; + pc = 0x1e600; + run_1e600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1ba00() throws ExecutionException { /* 0x1ba00 - 0x1bc00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1ba00: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r29 = r29 + -80; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r17; - r17 = r4 + r0; - r4 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r31; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r21; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r20; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r19; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r18; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r16; - if(r4 == r3) { - /* Next insn is delay slot */ - pc=0x1bacc; - continue; - } - r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r5 = 7 << 16; - r5 = r5 + -6800; - /* Next insn is delay slot */ - r31=0x1ba50; - pc=0x3bc00; - run_3bc00(); return; - case 0x1ba50: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - addr=r28+-30732; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1ba64: - r3 = r0 + 10; - if(r17 == r3) { - /* Next insn is delay slot */ - pc=0x1baa0; - continue; - } - r3 = r0 + 13; - if(r17 == r3) { - /* Next insn is delay slot */ - pc=0x1baa0; - continue; - } - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = (r3&0xffffffffL) < (1024&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1baa0; - continue; - } - r4 = r3 + 1; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; - r2 = r2 + r3; - addr=r2+20; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1baa0: - r31 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r21 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r19 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r18 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r16 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - addr=r28+-30732; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r17 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r29 = r29 + 80; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1bacc: - addr=r28+-30732; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r3 = r0 + 10; - if(r5 != r3) { - /* Next insn is delay slot */ - pc=0x1ba64; - continue; - } - r6 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r5 = r5 + -6776; - r6 = r6 + -1; - /* Next insn is delay slot */ - r31=0x1baf8; - pc=0x3bc00; - run_3bc00(); return; - case 0x1baf8: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x1bb8c; - continue; - } - addr=r29+36; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r29+16; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r21 = r29 + 36; - r20 = r29 + 16; - case 0x1bb20: - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r5 = 7 << 16; - r6 = r21 + r0; - r5 = r5 + -6752; - r7 = r20 + r0; - /* Next insn is delay slot */ - r31=0x1bb3c; - pc=0x3bc00; - run_3bc00(); return; - case 0x1bb3c: - r6 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = r0 + 1024; - r2 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1bc28; - run_1bc00(); return; - } - case 0x1bb54: - r2 = r6 + r2; - r4 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - r5 = 7 << 16; - addr=r2+20; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r5 = r5 + -6780; - r6 = r6 + 20; - /* Next insn is delay slot */ - r31=0x1bb74; - pc=0x3bc00; - run_3bc00(); return; - case 0x1bb74: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x1ba64; - continue; - case 0x1bb8c: - r21 = r29 + 36; - r6 = 7 << 16; - r7 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r4 = r21 + r0; - r5 = r0 + 5; - r6 = r6 + -6768; - /* Next insn is delay slot */ - r31=0x1bbac; - pc=0x41c00; - run_41c00(); return; - case 0x1bbac: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r20 = r29 + 16; - r3 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - addr=r29+16; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1bb20; - continue; - } - r19 = 7 << 16; - r18 = r20 + r0; - r16 = r0 + r0; - r19 = r19 + -6760; - case 0x1bbd4: - r2 = r2 + r16; - addr=r2+1044; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r6 = tmp; - r4 = r18 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x1bbec; - pc=0x42000; - run_42000(); return; - case 0x1bbec: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r16 = r16 + 1; - r3 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r18 = r18 + 2; - r4 = ((r16 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - case 0x1bc00: - pc=0x1bc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1bc00() throws ExecutionException { /* 0x1bc00 - 0x1be00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1bc00: - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x1bbd4; - run_1ba00(); return; - } - r4 = r0 + 9; - if(r3 != r4) { - /* Next insn is delay slot */ - pc=0x1bb20; - run_1ba00(); return; - } - r3 = 11822 << 16; - r3 = r3 + 11776; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x1bb20; - run_1ba00(); return; - case 0x1bc28: - r2 = r0 + 1023; - writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x1bb54; - run_1ba00(); return; - case 0x1be00: - pc=0x1be00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1be00() throws ExecutionException { /* 0x1be00 - 0x1c000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1be00: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r0 + 1; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r4; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1c000: - pc=0x1c000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1c000() throws ExecutionException { /* 0x1c000 - 0x1c200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1c000: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r29 = r29 + -48; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1c0a0; - continue; - } - r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r4 = r3 + 1; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r4; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1c050: - r3 = r0 + 10; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x1c074; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r4 = r4 + 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - case 0x1c074: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1c0a0: - r21 = 7 << 16; - r4 = 7 << 16; - r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r16 = r0 + r0; - r21 = r21 + -6444; - r20 = r4 + -6700; - r18 = r0 + -1; - r19 = r0 + 13; - r17 = r0 + 10; - case 0x1c0c4: - r3 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1c41c; - run_1c400(); return; - } - case 0x1c0d0: - r5 = r5 << 2; - r5 = r21 + r5; - r3 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r3; - return; - case 0x1c0e8: - if(r16 == r18) { - /* Next insn is delay slot */ - pc=0x1c2ec; - run_1c200(); return; - } - if(r16 == r19) { - /* Next insn is delay slot */ - pc=0x1c2ec; - run_1c200(); return; - } - if(r16 == r17) { - /* Next insn is delay slot */ - pc=0x1c2ec; - run_1c200(); return; - } - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1c108: - r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = r3 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; - if(r3 < 0) { - /* Next insn is delay slot */ - pc=0x1c304; - run_1c200(); return; - } - r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r16 = tmp; - case 0x1c144: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1c0e8; - continue; - } - r4 = r16 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1c16c; - pc=0x1ba00; - run_1ba00(); return; - case 0x1c16c: - /* Next insn is delay slot */ - pc=0x1c0e8; - continue; - case 0x1c174: - r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = r3 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; - if(r3 < 0) { - /* Next insn is delay slot */ - pc=0x1c51c; - run_1c400(); return; - } - r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r16 = tmp; - case 0x1c1b0: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1c1d8; - continue; - } - r4 = r16 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1c1d8; - pc=0x1ba00; - run_1ba00(); return; - case 0x1c1d8: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1c1dc: - r3 = r0 + -1; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - if(r16 == r3) { - /* Next insn is delay slot */ - pc=0x1c478; - run_1c400(); return; - } - r4 = 7 << 16; - r3 = r16 & 255; - r4 = r4 + -7236; - r3 = r3 + r4; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - case 0x1c200: - pc=0x1c200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1c200() throws ExecutionException { /* 0x1c200 - 0x1c400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1c200: - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1c25c; - continue; - } - r3 = r0 + 32; - if(r16 == r3) { - /* Next insn is delay slot */ - pc=0x1c460; - run_1c400(); return; - } - r3 = r16 < 33 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x1c43c; - run_1c400(); return; - } - r3 = r0 + 59; - if(r16 == r3) { - /* Next insn is delay slot */ - pc=0x1c4e8; - run_1c400(); return; - } - r3 = r0 + 125; - if(r16 == r3) { - /* Next insn is delay slot */ - pc=0x1c4d0; - run_1c400(); return; - } - r2 = r0 + 58; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x1c490; - run_1c400(); return; - } - case 0x1c24c: - r4 = 7 << 16; - r4 = r4 + -6740; - /* Next insn is delay slot */ - r31=0x1c25c; - pc=0x1b000; - run_1b000(); return; - case 0x1c25c: - r2 = r16 << 24; - r2 = r2 >> 24; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c050; - run_1c000(); return; - case 0x1c270: - r20 = r0 + 9; - r22 = r0 + 32; - case 0x1c278: - r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = r3 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; - if(r3 < 0) { - /* Next insn is delay slot */ - pc=0x1c400; - run_1c400(); return; - } - r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r16 = tmp; - case 0x1c2b4: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1c2dc; - continue; - } - r4 = r16 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1c2dc; - pc=0x1ba00; - run_1ba00(); return; - case 0x1c2dc: - if(r16 == r20) { - /* Next insn is delay slot */ - pc=0x1c320; - continue; - } - if(r16 == r22) { - /* Next insn is delay slot */ - pc=0x1c320; - continue; - } - case 0x1c2ec: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r0 + 1; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r5 = r0 + 1; - /* Next insn is delay slot */ - pc=0x1c0d0; - run_1c000(); return; - case 0x1c304: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1c314; - pc=0x41600; - run_41600(); return; - case 0x1c314: - r16 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1c144; - run_1c000(); return; - case 0x1c320: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1c278; - continue; - case 0x1c32c: - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - r2 = r0 + 10; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c050; - run_1c000(); return; - case 0x1c340: - r3 = r0 + 5; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r2 = r0 + 10; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c050; - run_1c000(); return; - case 0x1c358: - r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = r3 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; - if(r3 < 0) { - /* Next insn is delay slot */ - pc=0x1c500; - run_1c400(); return; - } - r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r16 = tmp; - case 0x1c394: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1c3bc; - continue; - } - r4 = r16 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1c3bc; - pc=0x1ba00; - run_1ba00(); return; - case 0x1c3bc: - if(r16 != r17) { - /* Next insn is delay slot */ - pc=0x1c2ec; - continue; - } - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = r0 + r0; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x1c0d0; - run_1c000(); return; - case 0x1c3d8: - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - r2 = r0 + 125; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c050; - run_1c000(); return; - case 0x1c3ec: - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - r2 = r0 + 13; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c050; - run_1c000(); return; - case 0x1c400: - pc=0x1c400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1c400() throws ExecutionException { /* 0x1c400 - 0x1c600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1c400: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1c410; - pc=0x41600; - run_41600(); return; - case 0x1c410: - r16 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1c2b4; - run_1c200(); return; - case 0x1c41c: - r4 = r20 + r0; - /* Next insn is delay slot */ - r31=0x1c428; - pc=0x1b800; - run_1b800(); return; - case 0x1c428: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1c0c4; - run_1c000(); return; - case 0x1c43c: - r3 = r0 + 10; - if(r16 == r3) { - /* Next insn is delay slot */ - pc=0x1c4b8; - continue; - } - r3 = r0 + 13; - if(r16 == r3) { - /* Next insn is delay slot */ - pc=0x1c4a0; - continue; - } - r3 = r0 + 9; - if(r16 != r3) { - /* Next insn is delay slot */ - pc=0x1c24c; - run_1c200(); return; - } - case 0x1c460: - r3 = r0 + 2; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r2 = r0 + 32; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c050; - run_1c000(); return; - case 0x1c478: - r3 = r0 + 8; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c050; - run_1c000(); return; - case 0x1c490: - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c050; - run_1c000(); return; - case 0x1c4a0: - r3 = r0 + 4; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c050; - run_1c000(); return; - case 0x1c4b8: - r3 = r0 + 3; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c050; - run_1c000(); return; - case 0x1c4d0: - r3 = r0 + 7; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c050; - run_1c000(); return; - case 0x1c4e8: - r3 = r0 + 6; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c050; - run_1c000(); return; - case 0x1c500: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1c510; - pc=0x41600; - run_41600(); return; - case 0x1c510: - r16 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1c394; - run_1c200(); return; - case 0x1c51c: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1c52c; - pc=0x41600; - run_41600(); return; - case 0x1c52c: - r16 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1c1b0; - run_1c000(); return; - case 0x1c600: - pc=0x1c600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1c600() throws ExecutionException { /* 0x1c600 - 0x1c800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1c600: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r29 = r29 + -24; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1c654; - continue; - } - r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r4 = r3 + 1; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r4; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1c638: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1c700; - continue; - } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1c654: - r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = r3 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; - if(r3 < 0) { - /* Next insn is delay slot */ - pc=0x1c754; - continue; - } - r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r16 = tmp; - case 0x1c690: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1c6b8; - continue; - } - r4 = r16 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1c6b8; - pc=0x1ba00; - run_1ba00(); return; - case 0x1c6b8: - r2 = r0 + 10; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x1c6f0; - continue; - } - r2 = r0 + 13; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x1c770; - continue; - } - r2 = r0 + -1; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x1c728; - continue; - } - r2 = r16 << 24; - r2 = r2 >> 24; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c638; - continue; - case 0x1c6f0: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r0 + 3; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1c700: - r4 = 7 << 16; - r4 = r4 + -6680; - /* Next insn is delay slot */ - r31=0x1c710; - pc=0x1b000; - run_1b000(); return; - case 0x1c710: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - case 0x1c714: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1c728: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r0 + 8; - r4 = 7 << 16; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r4 = r4 + -6680; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1c748; - pc=0x1b000; - run_1b000(); return; - case 0x1c748: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x1c714; - continue; - case 0x1c754: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1c764; - pc=0x41600; - run_41600(); return; - case 0x1c764: - r16 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1c690; - continue; - case 0x1c770: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r0 + 4; - r4 = 7 << 16; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r4 = r4 + -6680; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1c790; - pc=0x1b000; - run_1b000(); return; - case 0x1c790: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x1c714; - continue; - case 0x1c800: - pc=0x1c800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1c800() throws ExecutionException { /* 0x1c800 - 0x1ca00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1c800: - r29 = r29 + -56; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - r23 = 7 << 16; - r21 = 7 << 16; - r22 = 7 << 16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r21 = r21 + -6408; - r23 = r23 + -6700; - r22 = r22 + -7236; - case 0x1c848: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1c8b0; - continue; - } - case 0x1c850: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1c8e4; - continue; - } - r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1c884: - r3 = r0 + 10; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x1c848; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r4 = r4 + 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1c850; - continue; - } - case 0x1c8b0: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1c8e4: - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r30 = r0 + r0; - r17 = r0 + -1; - r18 = r0 + 13; - r16 = r0 + 10; - case 0x1c8f8: - r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1cc5c; - run_1cc00(); return; - } - case 0x1c904: - r5 = r5 << 2; - r5 = r21 + r5; - r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r4; - return; - case 0x1c91c: - if(r30 == r17) { - /* Next insn is delay slot */ - pc=0x1c9a8; - continue; - } - case 0x1c924: - if(r30 == r18) { - /* Next insn is delay slot */ - pc=0x1c9a8; - continue; - } - if(r30 == r16) { - /* Next insn is delay slot */ - pc=0x1c9a8; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1c93c: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1cab4; - run_1ca00(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1c978: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1c91c; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1c9a0; - pc=0x1ba00; - run_1ba00(); return; - case 0x1c9a0: - if(r30 != r17) { - /* Next insn is delay slot */ - pc=0x1c924; - continue; - } - case 0x1c9a8: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = r0 + 1; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r4; - r5 = r0 + 1; - /* Next insn is delay slot */ - pc=0x1c904; - continue; - case 0x1c9c0: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1cd40; - run_1cc00(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1c9fc: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - case 0x1ca00: - pc=0x1ca00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1ca00() throws ExecutionException { /* 0x1ca00 - 0x1cc00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1ca00: - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1ca24; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1ca24; - pc=0x1ba00; - run_1ba00(); return; - case 0x1ca24: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1ca28: - r4 = r0 + -1; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1cce8; - run_1cc00(); return; - } - r4 = r30 & 255; - r4 = r4 + r22; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r4 & 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1caa0; - continue; - } - r4 = r0 + 32; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1cca0; - run_1cc00(); return; - } - r4 = r30 < 33 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x1cc7c; - run_1cc00(); return; - } - r4 = r0 + 59; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1ccb8; - run_1cc00(); return; - } - r4 = r0 + 125; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1cd28; - run_1cc00(); return; - } - r3 = r0 + 58; - if(r30 == r3) { - /* Next insn is delay slot */ - pc=0x1cd18; - run_1cc00(); return; - } - case 0x1ca90: - r4 = 7 << 16; - r4 = r4 + -6740; - /* Next insn is delay slot */ - r31=0x1caa0; - pc=0x1b000; - run_1b000(); return; - case 0x1caa0: - r2 = r30 << 24; - r2 = r2 >> 24; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c884; - run_1c800(); return; - case 0x1cab4: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1cac4; - pc=0x41600; - run_41600(); return; - case 0x1cac4: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1c978; - run_1c800(); return; - case 0x1cad0: - r2 = r0 + 125; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c884; - run_1c800(); return; - case 0x1cae4: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1cd5c; - run_1cc00(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1cb20: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1cb48; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1cb48; - pc=0x1ba00; - run_1ba00(); return; - case 0x1cb48: - if(r30 != r16) { - /* Next insn is delay slot */ - pc=0x1c9a8; - run_1c800(); return; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = r0 + r0; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x1c904; - run_1c800(); return; - case 0x1cb64: - r2 = r0 + 5; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + 10; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c884; - run_1c800(); return; - case 0x1cb7c: - r2 = r0 + 10; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c884; - run_1c800(); return; - case 0x1cb90: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r19 = r0 + 9; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r20 = r0 + 32; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1cc2c; - run_1cc00(); return; - } - case 0x1cbb0: - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1cbcc: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1cbf4; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1cbf4; - pc=0x1ba00; - run_1ba00(); return; - case 0x1cbf4: - if(r30 == r19) { - /* Next insn is delay slot */ - pc=0x1cc04; - run_1cc00(); return; - } - if(r30 != r20) { - /* Next insn is delay slot */ - pc=0x1c9a8; - run_1c800(); return; - } - case 0x1cc00: - pc=0x1cc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1cc00() throws ExecutionException { /* 0x1cc00 - 0x1ce00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1cc00: - case 0x1cc04: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x1cbb0; - run_1ca00(); return; - } - case 0x1cc2c: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1cc3c; - pc=0x41600; - run_41600(); return; - case 0x1cc3c: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1cbcc; - run_1ca00(); return; - case 0x1cc48: - r2 = r0 + 13; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c884; - run_1c800(); return; - case 0x1cc5c: - r4 = r23 + r0; - /* Next insn is delay slot */ - r31=0x1cc68; - pc=0x1b800; - run_1b800(); return; - case 0x1cc68: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1c8f8; - run_1c800(); return; - case 0x1cc7c: - r4 = r0 + 10; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1ccd0; - continue; - } - r4 = r0 + 13; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1cd00; - continue; - } - r4 = r0 + 9; - if(r30 != r4) { - /* Next insn is delay slot */ - pc=0x1ca90; - run_1ca00(); return; - } - case 0x1cca0: - r2 = r0 + 2; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + 32; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c884; - run_1c800(); return; - case 0x1ccb8: - r2 = r0 + 6; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c884; - run_1c800(); return; - case 0x1ccd0: - r2 = r0 + 3; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c884; - run_1c800(); return; - case 0x1cce8: - r2 = r0 + 8; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c884; - run_1c800(); return; - case 0x1cd00: - r2 = r0 + 4; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c884; - run_1c800(); return; - case 0x1cd18: - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c884; - run_1c800(); return; - case 0x1cd28: - r2 = r0 + 7; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1c884; - run_1c800(); return; - case 0x1cd40: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1cd50; - pc=0x41600; - run_41600(); return; - case 0x1cd50: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1c9fc; - run_1c800(); return; - case 0x1cd5c: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1cd6c; - pc=0x41600; - run_41600(); return; - case 0x1cd6c: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1cb20; - run_1ca00(); return; - case 0x1ce00: - pc=0x1ce00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1ce00() throws ExecutionException { /* 0x1ce00 - 0x1d000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1ce00: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r29 = r29 + -56; - r3 = r0 + 32; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1d284; - run_1d200(); return; - } - case 0x1ce3c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1ce78; - continue; - } - case 0x1ce44: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1ce78: - r4 = 7 << 16; - r4 = r4 + -6644; - /* Next insn is delay slot */ - r31=0x1ce88; - pc=0x1b000; - run_1b000(); return; - case 0x1ce88: - r21 = 7 << 16; - r23 = 7 << 16; - r22 = 7 << 16; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r21 = r21 + -6372; - r23 = r23 + -6700; - r22 = r22 + -7236; - case 0x1cea4: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1ce44; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1cf0c; - continue; - } - r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1cee0: - r3 = r0 + 10; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x1cea4; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r4 = r4 + 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x1cea4; - continue; - case 0x1cf0c: - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r30 = r0 + r0; - r17 = r0 + -1; - r18 = r0 + 13; - r16 = r0 + 10; - case 0x1cf20: - r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1d298; - run_1d200(); return; - } - case 0x1cf2c: - r5 = r5 << 2; - r5 = r21 + r5; - r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r4; - return; - case 0x1cf44: - if(r30 == r17) { - /* Next insn is delay slot */ - pc=0x1d138; - run_1d000(); return; - } - if(r30 == r18) { - /* Next insn is delay slot */ - pc=0x1d138; - run_1d000(); return; - } - if(r30 == r16) { - /* Next insn is delay slot */ - pc=0x1d138; - run_1d000(); return; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1cf64: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1d150; - run_1d000(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1cfa0: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1cf44; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1cfc8; - pc=0x1ba00; - run_1ba00(); return; - case 0x1cfc8: - /* Next insn is delay slot */ - pc=0x1cf44; - continue; - case 0x1cfd0: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1d37c; - run_1d200(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - case 0x1d000: - pc=0x1d000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1d000() throws ExecutionException { /* 0x1d000 - 0x1d200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1d000: - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1d00c: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1d034; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1d034; - pc=0x1ba00; - run_1ba00(); return; - case 0x1d034: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1d038: - r4 = r0 + -1; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1d2e8; - run_1d200(); return; - } - r4 = r30 & 255; - r4 = r4 + r22; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r4 & 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1d0b0; - continue; - } - r4 = r0 + 32; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1d324; - run_1d200(); return; - } - r4 = r30 < 33 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x1d2b8; - run_1d200(); return; - } - r4 = r0 + 59; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1d354; - run_1d200(); return; - } - r4 = r0 + 125; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1d300; - run_1d200(); return; - } - r3 = r0 + 58; - if(r30 == r3) { - /* Next insn is delay slot */ - pc=0x1d36c; - run_1d200(); return; - } - case 0x1d0a0: - r4 = 7 << 16; - r4 = r4 + -6740; - /* Next insn is delay slot */ - r31=0x1d0b0; - pc=0x1b000; - run_1b000(); return; - case 0x1d0b0: - r2 = r30 << 24; - r2 = r2 >> 24; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1cee0; - run_1ce00(); return; - case 0x1d0c4: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r19 = r0 + 9; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r20 = r0 + 32; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1d254; - run_1d200(); return; - } - case 0x1d0e4: - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1d100: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1d128; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1d128; - pc=0x1ba00; - run_1ba00(); return; - case 0x1d128: - if(r30 == r19) { - /* Next insn is delay slot */ - pc=0x1d22c; - run_1d200(); return; - } - if(r30 == r20) { - /* Next insn is delay slot */ - pc=0x1d22c; - run_1d200(); return; - } - case 0x1d138: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = r0 + 1; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r4; - r5 = r0 + 1; - /* Next insn is delay slot */ - pc=0x1cf2c; - run_1ce00(); return; - case 0x1d150: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1d160; - pc=0x41600; - run_41600(); return; - case 0x1d160: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1cfa0; - run_1ce00(); return; - case 0x1d16c: - r2 = r0 + 125; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1cee0; - run_1ce00(); return; - case 0x1d180: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1d398; - run_1d200(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1d1bc: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1d1e4; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1d1e4; - pc=0x1ba00; - run_1ba00(); return; - case 0x1d1e4: - if(r30 != r16) { - /* Next insn is delay slot */ - pc=0x1d138; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = r0 + r0; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x1cf2c; - run_1ce00(); return; - case 0x1d200: - pc=0x1d200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1d200() throws ExecutionException { /* 0x1d200 - 0x1d400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1d200: - r2 = r0 + 5; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + 10; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1cee0; - run_1ce00(); return; - case 0x1d218: - r2 = r0 + 10; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1cee0; - run_1ce00(); return; - case 0x1d22c: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x1d0e4; - run_1d000(); return; - } - case 0x1d254: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1d264; - pc=0x41600; - run_41600(); return; - case 0x1d264: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1d100; - run_1d000(); return; - case 0x1d270: - r2 = r0 + 13; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1cee0; - run_1ce00(); return; - case 0x1d284: - /* Next insn is delay slot */ - r31=0x1d28c; - pc=0x1c000; - run_1c000(); return; - case 0x1d28c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x1ce3c; - run_1ce00(); return; - case 0x1d298: - r4 = r23 + r0; - /* Next insn is delay slot */ - r31=0x1d2a4; - pc=0x1b800; - run_1b800(); return; - case 0x1d2a4: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1cf20; - run_1ce00(); return; - case 0x1d2b8: - r4 = r0 + 10; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1d33c; - continue; - } - r4 = r0 + 13; - if(r30 != r4) { - /* Next insn is delay slot */ - pc=0x1d318; - continue; - } - r2 = r0 + 4; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1cee0; - run_1ce00(); return; - case 0x1d2e8: - r2 = r0 + 8; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1cee0; - run_1ce00(); return; - case 0x1d300: - r2 = r0 + 7; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1cee0; - run_1ce00(); return; - case 0x1d318: - r4 = r0 + 9; - if(r30 != r4) { - /* Next insn is delay slot */ - pc=0x1d0a0; - run_1d000(); return; - } - case 0x1d324: - r2 = r0 + 2; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + 32; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1cee0; - run_1ce00(); return; - case 0x1d33c: - r2 = r0 + 3; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1cee0; - run_1ce00(); return; - case 0x1d354: - r2 = r0 + 6; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1cee0; - run_1ce00(); return; - case 0x1d36c: - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1cee0; - run_1ce00(); return; - case 0x1d37c: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1d38c; - pc=0x41600; - run_41600(); return; - case 0x1d38c: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1d00c; - run_1d000(); return; - case 0x1d398: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1d3a8; - pc=0x41600; - run_41600(); return; - case 0x1d3a8: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1d1bc; - run_1d000(); return; - case 0x1d400: - pc=0x1d400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1d400() throws ExecutionException { /* 0x1d400 - 0x1d600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1d400: - r29 = r29 + -56; - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - r20 = 7 << 16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - r16 = r4 + r0; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - r19 = r0 + 1; - r21 = r0 + 39; - r20 = r20 + -6680; - case 0x1d448: - /* Next insn is delay slot */ - r31=0x1d450; - pc=0x1c000; - run_1c000(); return; - case 0x1d450: - r23 = r2 + r0; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x1d48c; - continue; - } - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1d758; - run_1d600(); return; - } - case 0x1d478: - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r2 + 1; - r2 = r3 + r2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1d48c: - if(r23 == r21) { - /* Next insn is delay slot */ - pc=0x1d534; - continue; - } - r2 = r23 < 40 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1d6e4; - run_1d600(); return; - } - r2 = r0 + 123; - if(r23 == r2) { - /* Next insn is delay slot */ - pc=0x1d744; - run_1d600(); return; - } - r2 = r0 + 125; - if(r23 != r2) { - /* Next insn is delay slot */ - pc=0x1d4bc; - continue; - } - r19 = r19 + -1; - case 0x1d4bc: - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x1d448; - continue; - } - case 0x1d4c4: - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x1d774; - run_1d600(); return; - } - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x1d4dc; - pc=0x17c00; - run_17c00(); return; - case 0x1d4dc: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + 13; - /* Next insn is delay slot */ - r31=0x1d4ec; - pc=0x17c00; - run_17c00(); return; - case 0x1d4ec: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=0x17a00; - run_17a00(); return; - case 0x1d524: - r4 = 7 << 16; - r4 = r4 + -6912; - /* Next insn is delay slot */ - r31=0x1d534; - pc=0x1b200; - run_1b200(); return; - case 0x1d534: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r17 = r0 + 10; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r22 = r0 + 3; - r18 = r0 + 13; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1d5e0; - continue; - } - case 0x1d550: - r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r30 = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r30&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r30 == r0) { - /* Next insn is delay slot */ - pc=0x1d688; - run_1d600(); return; - } - case 0x1d574: - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x1d5b0; - continue; - } - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x1d70c; - run_1d600(); return; - } - case 0x1d598: - r2 = r3 + 1; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r5 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1d5b0: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1d4bc; - continue; - } - if(r23 == r3) { - /* Next insn is delay slot */ - pc=0x1d4bc; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1d550; - continue; - } - case 0x1d5e0: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1d728; - run_1d600(); return; - } - case 0x1d600: - pc=0x1d600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1d600() throws ExecutionException { /* 0x1d600 - 0x1d800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1d600: - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1d61c: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1d644; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1d644; - pc=0x1ba00; - run_1ba00(); return; - case 0x1d644: - if(r30 == r17) { - /* Next insn is delay slot */ - pc=0x1d67c; - continue; - } - if(r30 == r18) { - /* Next insn is delay slot */ - pc=0x1d6c0; - continue; - } - r2 = r0 + -1; - if(r30 == r2) { - /* Next insn is delay slot */ - pc=0x1d69c; - continue; - } - r30 = r30 << 24; - r30 = r30 >> 24; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r30&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x1d574; - run_1d400(); return; - } - /* Next insn is delay slot */ - pc=0x1d688; - continue; - case 0x1d67c: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r22; - case 0x1d688: - r4 = r20 + r0; - /* Next insn is delay slot */ - r31=0x1d694; - pc=0x1b000; - run_1b000(); return; - case 0x1d694: - /* Next insn is delay slot */ - pc=0x1d574; - run_1d400(); return; - case 0x1d69c: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r0 + 8; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r4 = r20 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1d6b8; - pc=0x1b000; - run_1b000(); return; - case 0x1d6b8: - /* Next insn is delay slot */ - pc=0x1d574; - run_1d400(); return; - case 0x1d6c0: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r0 + 4; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r4 = r20 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1d6dc; - pc=0x1b000; - run_1b000(); return; - case 0x1d6dc: - /* Next insn is delay slot */ - pc=0x1d574; - run_1d400(); return; - case 0x1d6e4: - r2 = r0 + 13; - if(r23 == r2) { - /* Next insn is delay slot */ - pc=0x1d524; - run_1d400(); return; - } - r2 = r0 + 34; - if(r23 == r2) { - /* Next insn is delay slot */ - pc=0x1d534; - run_1d400(); return; - } - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x1d448; - run_1d400(); return; - } - /* Next insn is delay slot */ - pc=0x1d4c4; - run_1d400(); return; - case 0x1d70c: - /* Next insn is delay slot */ - r31=0x1d714; - pc=0x17800; - run_17800(); return; - case 0x1d714: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1d598; - run_1d400(); return; - case 0x1d728: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1d738; - pc=0x41600; - run_41600(); return; - case 0x1d738: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1d61c; - continue; - case 0x1d744: - r19 = r19 + 1; - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x1d448; - run_1d400(); return; - } - /* Next insn is delay slot */ - pc=0x1d4c4; - run_1d400(); return; - case 0x1d758: - /* Next insn is delay slot */ - r31=0x1d760; - pc=0x17800; - run_17800(); return; - case 0x1d760: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1d478; - run_1d400(); return; - case 0x1d774: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1d800: - pc=0x1d800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1d800() throws ExecutionException { /* 0x1d800 - 0x1da00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1d800: - r29 = r29 + -56; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r23; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r23 = tmp; - r20 = r4 << 24; - r20 = r20 >> 24; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r22; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - if(r23 == r20) { - /* Next insn is delay slot */ - pc=0x1da5c; - run_1da00(); return; - } - if(r23 == r0) { - /* Next insn is delay slot */ - pc=0x1da5c; - run_1da00(); return; - } - r18 = 7 << 16; - r19 = r0 + 34; - r18 = r18 + -6680; - r16 = r0 + 10; - r21 = r0 + 3; - /* Next insn is delay slot */ - pc=0x1d888; - continue; - case 0x1d860: - r2 = r0 + 39; - if(r23 == r2) { - /* Next insn is delay slot */ - pc=0x1d8c0; - continue; - } - case 0x1d86c: - /* Next insn is delay slot */ - r31=0x1d874; - pc=0x1c000; - run_1c000(); return; - case 0x1d874: - r23 = r2 + r0; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x1da5c; - run_1da00(); return; - } - if(r23 == r0) { - /* Next insn is delay slot */ - pc=0x1da5c; - run_1da00(); return; - } - case 0x1d888: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1db10; - run_1da00(); return; - } - case 0x1d8a4: - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r2 + 1; - r2 = r3 + r2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r23 != r19) { - /* Next insn is delay slot */ - pc=0x1d860; - continue; - } - case 0x1d8c0: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r17 = r0 + 13; - r4 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1d964; - continue; - } - case 0x1d8d8: - r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r22 = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r22&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x1d9f8; - continue; - } - case 0x1d8fc: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x1da20; - run_1da00(); return; - } - case 0x1d918: - r5 = r4 + r0; - r6 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r4 = r3 + 1; - writePages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff] = r4; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r3 = r6 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1da5c; - run_1da00(); return; - } - case 0x1d944: - if(r23 == r3) { - /* Next insn is delay slot */ - pc=0x1d86c; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x1d8d8; - continue; - } - case 0x1d964: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1daf4; - run_1da00(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r22 = tmp; - case 0x1d9a0: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1d9c8; - continue; - } - r4 = r22 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1d9c8; - pc=0x1ba00; - run_1ba00(); return; - case 0x1d9c8: - if(r22 == r16) { - /* Next insn is delay slot */ - pc=0x1dad4; - run_1da00(); return; - } - if(r22 == r17) { - /* Next insn is delay slot */ - pc=0x1dab0; - run_1da00(); return; - } - r2 = r0 + -1; - if(r22 == r2) { - /* Next insn is delay slot */ - pc=0x1da8c; - run_1da00(); return; - } - r22 = r22 << 24; - r22 = r22 >> 24; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r22&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x1d8fc; - continue; - } - case 0x1d9f8: - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x1da04; - pc=0x1b000; - run_1b000(); return; - case 0x1da00: - pc=0x1da00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1da00() throws ExecutionException { /* 0x1da00 - 0x1dc00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1da00: - case 0x1da04: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x1d918; - run_1d800(); return; - } - case 0x1da20: - /* Next insn is delay slot */ - r31=0x1da28; - pc=0x17800; - run_17800(); return; - case 0x1da28: - r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; - r6 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r4 = r3 + 1; - writePages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff] = r4; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r3 = r6 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x1d944; - run_1d800(); return; - } - case 0x1da5c: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r23 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r22 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1da8c: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r0 + 8; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r4 = r18 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1daa8; - pc=0x1b000; - run_1b000(); return; - case 0x1daa8: - /* Next insn is delay slot */ - pc=0x1da04; - continue; - case 0x1dab0: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r0 + 4; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r4 = r18 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1dacc; - pc=0x1b000; - run_1b000(); return; - case 0x1dacc: - /* Next insn is delay slot */ - pc=0x1da04; - continue; - case 0x1dad4: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = r18 + r0; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r21; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1daec; - pc=0x1b000; - run_1b000(); return; - case 0x1daec: - /* Next insn is delay slot */ - pc=0x1da04; - continue; - case 0x1daf4: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1db04; - pc=0x41600; - run_41600(); return; - case 0x1db04: - r22 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1d9a0; - run_1d800(); return; - case 0x1db10: - /* Next insn is delay slot */ - r31=0x1db18; - pc=0x17800; - run_17800(); return; - case 0x1db18: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1d8a4; - run_1d800(); return; - case 0x1dc00: - pc=0x1dc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1dc00() throws ExecutionException { /* 0x1dc00 - 0x1de00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1dc00: - r29 = r29 + -56; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - r23 = 7 << 16; - r17 = 7 << 16; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - r16 = r0 + r0; - r17 = r17 + -7236; - r23 = r23 + -6336; - case 0x1dc44: - r3 = r2 & 255; - r3 = r17 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r3 & 64; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1dd04; - continue; - } - case 0x1dc60: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r3 == r5) { - /* Next insn is delay slot */ - pc=0x1df24; - run_1de00(); return; - } - case 0x1dc7c: - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r6 = r3 + 1; - r3 = r5 + r3; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r16 = r16 + 1; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1dd54; - continue; - } - r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1dcc4: - r3 = r0 + 10; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x1dc44; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r4 = r4 + 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - r3 = r2 & 255; - r3 = r17 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r3 & 64; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x1dc60; - continue; - } - case 0x1dd04: - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x1dd1c; - continue; - } - r4 = 7 << 16; - r4 = r4 + -6844; - /* Next insn is delay slot */ - r31=0x1dd1c; - pc=0x1b000; - run_1b000(); return; - case 0x1dd1c: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r2 = r16 + r0; - r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1dd54: - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r30 = r0 + r0; - r19 = r0 + -1; - r20 = r0 + 13; - r18 = r0 + 10; - case 0x1dd68: - r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1e0e8; - run_1e000(); return; - } - case 0x1dd74: - r5 = r5 << 2; - r5 = r23 + r5; - r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r4; - return; - case 0x1dd8c: - if(r30 == r19) { - /* Next insn is delay slot */ - pc=0x1de18; - run_1de00(); return; - } - case 0x1dd94: - if(r30 == r20) { - /* Next insn is delay slot */ - pc=0x1de18; - run_1de00(); return; - } - if(r30 == r18) { - /* Next insn is delay slot */ - pc=0x1de18; - run_1de00(); return; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1ddac: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1df40; - run_1de00(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1dde8: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1dd8c; - continue; - } - case 0x1de00: - pc=0x1de00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1de00() throws ExecutionException { /* 0x1de00 - 0x1e000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1de00: - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1de10; - pc=0x1ba00; - run_1ba00(); return; - case 0x1de10: - if(r30 != r19) { - /* Next insn is delay slot */ - pc=0x1dd94; - run_1dc00(); return; - } - case 0x1de18: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = r0 + 1; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r4; - r5 = r0 + 1; - /* Next insn is delay slot */ - pc=0x1dd74; - run_1dc00(); return; - case 0x1de30: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1e1d0; - run_1e000(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1de6c: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1de94; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1de94; - pc=0x1ba00; - run_1ba00(); return; - case 0x1de94: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1de98: - r4 = r0 + -1; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1e178; - run_1e000(); return; - } - r4 = r30 & 255; - r4 = r17 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r4 & 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1df10; - continue; - } - r4 = r0 + 32; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1e130; - run_1e000(); return; - } - r4 = r30 < 33 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x1e10c; - run_1e000(); return; - } - r4 = r0 + 59; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1e148; - run_1e000(); return; - } - r4 = r0 + 125; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1e1b8; - run_1e000(); return; - } - r3 = r0 + 58; - if(r30 == r3) { - /* Next insn is delay slot */ - pc=0x1e1a8; - run_1e000(); return; - } - case 0x1df00: - r2 = 7 << 16; - r4 = r2 + -6740; - /* Next insn is delay slot */ - r31=0x1df10; - pc=0x1b000; - run_1b000(); return; - case 0x1df10: - r2 = r30 << 24; - r2 = r2 >> 24; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1dcc4; - run_1dc00(); return; - case 0x1df24: - /* Next insn is delay slot */ - r31=0x1df2c; - pc=0x17800; - run_17800(); return; - case 0x1df2c: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1dc7c; - run_1dc00(); return; - case 0x1df40: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1df50; - pc=0x41600; - run_41600(); return; - case 0x1df50: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1dde8; - run_1dc00(); return; - case 0x1df5c: - r2 = r0 + 125; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1dcc4; - run_1dc00(); return; - case 0x1df70: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1e1ec; - run_1e000(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1dfac: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1dfd4; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1dfd4; - pc=0x1ba00; - run_1ba00(); return; - case 0x1dfd4: - if(r30 != r18) { - /* Next insn is delay slot */ - pc=0x1de18; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = r0 + r0; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x1dd74; - run_1dc00(); return; - case 0x1dff0: - r2 = r0 + 5; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + 10; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1e000: - pc=0x1e000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1e000() throws ExecutionException { /* 0x1e000 - 0x1e200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1e000: - /* Next insn is delay slot */ - pc=0x1dcc4; - run_1dc00(); return; - case 0x1e008: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r21 = r0 + 9; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r22 = r0 + 32; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1e0a4; - continue; - } - case 0x1e028: - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1e044: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1e06c; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1e06c; - pc=0x1ba00; - run_1ba00(); return; - case 0x1e06c: - if(r30 == r21) { - /* Next insn is delay slot */ - pc=0x1e07c; - continue; - } - if(r30 != r22) { - /* Next insn is delay slot */ - pc=0x1de18; - run_1de00(); return; - } - case 0x1e07c: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x1e028; - continue; - } - case 0x1e0a4: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1e0b4; - pc=0x41600; - run_41600(); return; - case 0x1e0b4: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1e044; - continue; - case 0x1e0c0: - r2 = r0 + 13; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1dcc4; - run_1dc00(); return; - case 0x1e0d4: - r2 = r0 + 10; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1dcc4; - run_1dc00(); return; - case 0x1e0e8: - r4 = 7 << 16; - r4 = r4 + -6700; - /* Next insn is delay slot */ - r31=0x1e0f8; - pc=0x1b800; - run_1b800(); return; - case 0x1e0f8: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1dd68; - run_1dc00(); return; - case 0x1e10c: - r4 = r0 + 10; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1e160; - continue; - } - r4 = r0 + 13; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1e190; - continue; - } - r4 = r0 + 9; - if(r30 != r4) { - /* Next insn is delay slot */ - pc=0x1df00; - run_1de00(); return; - } - case 0x1e130: - r2 = r0 + 2; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + 32; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1dcc4; - run_1dc00(); return; - case 0x1e148: - r2 = r0 + 6; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1dcc4; - run_1dc00(); return; - case 0x1e160: - r2 = r0 + 3; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1dcc4; - run_1dc00(); return; - case 0x1e178: - r2 = r0 + 8; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1dcc4; - run_1dc00(); return; - case 0x1e190: - r2 = r0 + 4; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1dcc4; - run_1dc00(); return; - case 0x1e1a8: - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1dcc4; - run_1dc00(); return; - case 0x1e1b8: - r2 = r0 + 7; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1dcc4; - run_1dc00(); return; - case 0x1e1d0: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1e1e0; - pc=0x41600; - run_41600(); return; - case 0x1e1e0: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1de6c; - run_1de00(); return; - case 0x1e1ec: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1e1fc; - pc=0x41600; - run_41600(); return; - case 0x1e1fc: - r30 = r2 + r0; - case 0x1e200: - pc=0x1e200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1e200() throws ExecutionException { /* 0x1e200 - 0x1e400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1e200: - /* Next insn is delay slot */ - pc=0x1dfac; - run_1de00(); return; - case 0x1e400: - pc=0x1e400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1e400() throws ExecutionException { /* 0x1e400 - 0x1e600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1e400: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r29 = r29 + -64; - r3 = r0 + 32; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r23; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1e9c4; - run_1e800(); return; - } - case 0x1e43c: - r3 = r0 + 46; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1e9e0; - run_1e800(); return; - } - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r0; - case 0x1e44c: - r3 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r17 = 7 << 16; - r23 = 7 << 16; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r0; - r16 = r0 + r0; - r17 = r17 + -7236; - r23 = r23 + -6300; - case 0x1e468: - r3 = r2 & 255; - r3 = r17 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r3 & 64; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1e528; - continue; - } - case 0x1e484: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r3 == r5) { - /* Next insn is delay slot */ - pc=0x1e758; - run_1e600(); return; - } - case 0x1e4a0: - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r6 = r3 + 1; - r3 = r5 + r3; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r16 = r16 + 1; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1e588; - continue; - } - r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1e4e8: - r3 = r0 + 10; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x1e468; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r4 = r4 + 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - r3 = r2 & 255; - r3 = r17 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r3 & 64; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x1e484; - continue; - } - case 0x1e528: - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x1e540; - continue; - } - r4 = 7 << 16; - r4 = r4 + -6844; - /* Next insn is delay slot */ - r31=0x1e540; - pc=0x1b000; - run_1b000(); return; - case 0x1e540: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x1e550; - pc=0x17c00; - run_17c00(); return; - case 0x1e550: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r2 = r16 + r0; - r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1e588: - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r30 = r0 + r0; - r19 = r0 + -1; - r20 = r0 + 13; - r18 = r0 + 10; - case 0x1e59c: - r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1e91c; - run_1e800(); return; - } - case 0x1e5a8: - r5 = r5 << 2; - r5 = r23 + r5; - r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r4; - return; - case 0x1e5c0: - if(r30 == r19) { - /* Next insn is delay slot */ - pc=0x1e64c; - run_1e600(); return; - } - case 0x1e5c8: - if(r30 == r20) { - /* Next insn is delay slot */ - pc=0x1e64c; - run_1e600(); return; - } - if(r30 == r18) { - /* Next insn is delay slot */ - pc=0x1e64c; - run_1e600(); return; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1e5e0: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1e774; - run_1e600(); return; - } - case 0x1e600: - pc=0x1e600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1e600() throws ExecutionException { /* 0x1e600 - 0x1e800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1e600: - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1e61c: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1e5c0; - run_1e400(); return; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1e644; - pc=0x1ba00; - run_1ba00(); return; - case 0x1e644: - if(r30 != r19) { - /* Next insn is delay slot */ - pc=0x1e5c8; - run_1e400(); return; - } - case 0x1e64c: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = r0 + 1; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r4; - r5 = r0 + 1; - /* Next insn is delay slot */ - pc=0x1e5a8; - run_1e400(); return; - case 0x1e664: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1ea4c; - run_1ea00(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1e6a0: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1e6c8; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1e6c8; - pc=0x1ba00; - run_1ba00(); return; - case 0x1e6c8: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1e6cc: - r4 = r0 + -1; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1e9ac; - run_1e800(); return; - } - r4 = r30 & 255; - r4 = r17 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r4 & 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1e744; - continue; - } - r4 = r0 + 32; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1e964; - run_1e800(); return; - } - r4 = r30 < 33 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x1e940; - run_1e800(); return; - } - r4 = r0 + 59; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1e97c; - run_1e800(); return; - } - r4 = r0 + 125; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1ea34; - run_1ea00(); return; - } - r3 = r0 + 58; - if(r30 == r3) { - /* Next insn is delay slot */ - pc=0x1ea24; - run_1ea00(); return; - } - case 0x1e734: - r2 = 7 << 16; - r4 = r2 + -6740; - /* Next insn is delay slot */ - r31=0x1e744; - pc=0x1b000; - run_1b000(); return; - case 0x1e744: - r2 = r30 << 24; - r2 = r2 >> 24; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1e4e8; - run_1e400(); return; - case 0x1e758: - /* Next insn is delay slot */ - r31=0x1e760; - pc=0x17800; - run_17800(); return; - case 0x1e760: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1e4a0; - run_1e400(); return; - case 0x1e774: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1e784; - pc=0x41600; - run_41600(); return; - case 0x1e784: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1e61c; - continue; - case 0x1e790: - r2 = r0 + 125; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1e4e8; - run_1e400(); return; - case 0x1e7a4: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1ea68; - run_1ea00(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1e7e0: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1e808; - run_1e800(); return; - } - r4 = r30 << 24; - r4 = r4 >> 24; - case 0x1e800: - pc=0x1e800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1e800() throws ExecutionException { /* 0x1e800 - 0x1ea00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1e800: - /* Next insn is delay slot */ - r31=0x1e808; - pc=0x1ba00; - run_1ba00(); return; - case 0x1e808: - if(r30 != r18) { - /* Next insn is delay slot */ - pc=0x1e64c; - run_1e600(); return; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = r0 + r0; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x1e5a8; - run_1e400(); return; - case 0x1e824: - r2 = r0 + 5; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + 10; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1e4e8; - run_1e400(); return; - case 0x1e83c: - r2 = r0 + 13; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1e4e8; - run_1e400(); return; - case 0x1e850: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r21 = r0 + 9; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r22 = r0 + 32; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1e8ec; - continue; - } - case 0x1e870: - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1e88c: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1e8b4; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1e8b4; - pc=0x1ba00; - run_1ba00(); return; - case 0x1e8b4: - if(r30 == r21) { - /* Next insn is delay slot */ - pc=0x1e8c4; - continue; - } - if(r30 != r22) { - /* Next insn is delay slot */ - pc=0x1e64c; - run_1e600(); return; - } - case 0x1e8c4: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x1e870; - continue; - } - case 0x1e8ec: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1e8fc; - pc=0x41600; - run_41600(); return; - case 0x1e8fc: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1e88c; - continue; - case 0x1e908: - r2 = r0 + 10; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1e4e8; - run_1e400(); return; - case 0x1e91c: - r4 = 7 << 16; - r4 = r4 + -6700; - /* Next insn is delay slot */ - r31=0x1e92c; - pc=0x1b800; - run_1b800(); return; - case 0x1e92c: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1e59c; - run_1e400(); return; - case 0x1e940: - r4 = r0 + 10; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1e994; - continue; - } - r4 = r0 + 13; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1ea0c; - run_1ea00(); return; - } - r4 = r0 + 9; - if(r30 != r4) { - /* Next insn is delay slot */ - pc=0x1e734; - run_1e600(); return; - } - case 0x1e964: - r2 = r0 + 2; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + 32; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1e4e8; - run_1e400(); return; - case 0x1e97c: - r2 = r0 + 6; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1e4e8; - run_1e400(); return; - case 0x1e994: - r2 = r0 + 3; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1e4e8; - run_1e400(); return; - case 0x1e9ac: - r2 = r0 + 8; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1e4e8; - run_1e400(); return; - case 0x1e9c4: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - r31=0x1e9d0; - pc=0x1c000; - run_1c000(); return; - case 0x1e9d0: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1e43c; - run_1e400(); return; - case 0x1e9e0: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - r31=0x1e9ec; - pc=0x1c000; - run_1c000(); return; - case 0x1e9ec: - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; - case 0x1ea00: - pc=0x1ea00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1ea00() throws ExecutionException { /* 0x1ea00 - 0x1ec00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1ea00: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x1e44c; - run_1e400(); return; - case 0x1ea0c: - r2 = r0 + 4; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1e4e8; - run_1e400(); return; - case 0x1ea24: - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1e4e8; - run_1e400(); return; - case 0x1ea34: - r2 = r0 + 7; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1e4e8; - run_1e400(); return; - case 0x1ea4c: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1ea5c; - pc=0x41600; - run_41600(); return; - case 0x1ea5c: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1e6a0; - run_1e600(); return; - case 0x1ea68: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1ea78; - pc=0x41600; - run_41600(); return; - case 0x1ea78: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1e7e0; - run_1e600(); return; - case 0x1ec00: - pc=0x1ec00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1ec00() throws ExecutionException { /* 0x1ec00 - 0x1ee00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1ec00: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r29 = r29 + -56; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - r17 = 7 << 16; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - r23 = 7 << 16; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r16 = r0 + r0; - r17 = r17 + -7236; - r23 = r23 + -6264; - case 0x1ec4c: - r3 = r2 & 255; - r3 = r17 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r3 & 64; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1ed0c; - continue; - } - case 0x1ec68: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r3 == r5) { - /* Next insn is delay slot */ - pc=0x1ef3c; - run_1ee00(); return; - } - case 0x1ec84: - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r6 = r3 + 1; - r3 = r5 + r3; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r16 = r16 + 1; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1ed6c; - continue; - } - r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1eccc: - r3 = r0 + 10; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x1ec4c; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r4 = r4 + 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - r3 = r2 & 255; - r3 = r17 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r3 & 64; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x1ec68; - continue; - } - case 0x1ed0c: - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x1ed24; - continue; - } - r4 = 7 << 16; - r4 = r4 + -6844; - /* Next insn is delay slot */ - r31=0x1ed24; - pc=0x1b000; - run_1b000(); return; - case 0x1ed24: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x1ed34; - pc=0x17c00; - run_17c00(); return; - case 0x1ed34: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r2 = r16 + r0; - r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x1ed6c: - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r30 = r0 + r0; - r19 = r0 + -1; - r20 = r0 + 13; - r18 = r0 + 10; - case 0x1ed80: - r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1f100; - run_1f000(); return; - } - case 0x1ed8c: - r5 = r5 << 2; - r5 = r23 + r5; - r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r4; - return; - case 0x1eda4: - if(r30 == r19) { - /* Next insn is delay slot */ - pc=0x1ee30; - run_1ee00(); return; - } - case 0x1edac: - if(r30 == r20) { - /* Next insn is delay slot */ - pc=0x1ee30; - run_1ee00(); return; - } - if(r30 == r18) { - /* Next insn is delay slot */ - pc=0x1ee30; - run_1ee00(); return; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1edc4: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1ef58; - run_1ee00(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1ee00: - pc=0x1ee00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1ee00() throws ExecutionException { /* 0x1ee00 - 0x1f000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1ee00: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1eda4; - run_1ec00(); return; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1ee28; - pc=0x1ba00; - run_1ba00(); return; - case 0x1ee28: - if(r30 != r19) { - /* Next insn is delay slot */ - pc=0x1edac; - run_1ec00(); return; - } - case 0x1ee30: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = r0 + 1; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r4; - r5 = r0 + 1; - /* Next insn is delay slot */ - pc=0x1ed8c; - run_1ec00(); return; - case 0x1ee48: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1f1e8; - run_1f000(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1ee84: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1eeac; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1eeac; - pc=0x1ba00; - run_1ba00(); return; - case 0x1eeac: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1eeb0: - r4 = r0 + -1; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1f190; - run_1f000(); return; - } - r4 = r30 & 255; - r4 = r17 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r4 & 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1ef28; - continue; - } - r4 = r0 + 32; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1f148; - run_1f000(); return; - } - r4 = r30 < 33 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x1f124; - run_1f000(); return; - } - r4 = r0 + 59; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1f160; - run_1f000(); return; - } - r4 = r0 + 125; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1f1d0; - run_1f000(); return; - } - r3 = r0 + 58; - if(r30 == r3) { - /* Next insn is delay slot */ - pc=0x1f1c0; - run_1f000(); return; - } - case 0x1ef18: - r2 = 7 << 16; - r4 = r2 + -6740; - /* Next insn is delay slot */ - r31=0x1ef28; - pc=0x1b000; - run_1b000(); return; - case 0x1ef28: - r2 = r30 << 24; - r2 = r2 >> 24; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1eccc; - run_1ec00(); return; - case 0x1ef3c: - /* Next insn is delay slot */ - r31=0x1ef44; - pc=0x17800; - run_17800(); return; - case 0x1ef44: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1ec84; - run_1ec00(); return; - case 0x1ef58: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1ef68; - pc=0x41600; - run_41600(); return; - case 0x1ef68: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1ee00; - continue; - case 0x1ef74: - r2 = r0 + 125; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1eccc; - run_1ec00(); return; - case 0x1ef88: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1f204; - run_1f200(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1efc4: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1efec; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1efec; - pc=0x1ba00; - run_1ba00(); return; - case 0x1efec: - if(r30 != r18) { - /* Next insn is delay slot */ - pc=0x1ee30; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = r0 + r0; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - case 0x1f000: - pc=0x1f000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1f000() throws ExecutionException { /* 0x1f000 - 0x1f200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1f000: - /* Next insn is delay slot */ - pc=0x1ed8c; - run_1ec00(); return; - case 0x1f008: - r2 = r0 + 5; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + 10; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1eccc; - run_1ec00(); return; - case 0x1f020: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r21 = r0 + 9; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r22 = r0 + 32; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1f0bc; - continue; - } - case 0x1f040: - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1f05c: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1f084; - continue; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1f084; - pc=0x1ba00; - run_1ba00(); return; - case 0x1f084: - if(r30 == r21) { - /* Next insn is delay slot */ - pc=0x1f094; - continue; - } - if(r30 != r22) { - /* Next insn is delay slot */ - pc=0x1ee30; - run_1ee00(); return; - } - case 0x1f094: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x1f040; - continue; - } - case 0x1f0bc: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1f0cc; - pc=0x41600; - run_41600(); return; - case 0x1f0cc: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1f05c; - continue; - case 0x1f0d8: - r2 = r0 + 13; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1eccc; - run_1ec00(); return; - case 0x1f0ec: - r2 = r0 + 10; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1eccc; - run_1ec00(); return; - case 0x1f100: - r4 = 7 << 16; - r4 = r4 + -6700; - /* Next insn is delay slot */ - r31=0x1f110; - pc=0x1b800; - run_1b800(); return; - case 0x1f110: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1ed80; - run_1ec00(); return; - case 0x1f124: - r4 = r0 + 10; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1f178; - continue; - } - r4 = r0 + 13; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1f1a8; - continue; - } - r4 = r0 + 9; - if(r30 != r4) { - /* Next insn is delay slot */ - pc=0x1ef18; - run_1ee00(); return; - } - case 0x1f148: - r2 = r0 + 2; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + 32; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1eccc; - run_1ec00(); return; - case 0x1f160: - r2 = r0 + 6; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1eccc; - run_1ec00(); return; - case 0x1f178: - r2 = r0 + 3; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1eccc; - run_1ec00(); return; - case 0x1f190: - r2 = r0 + 8; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1eccc; - run_1ec00(); return; - case 0x1f1a8: - r2 = r0 + 4; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1eccc; - run_1ec00(); return; - case 0x1f1c0: - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1eccc; - run_1ec00(); return; - case 0x1f1d0: - r2 = r0 + 7; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1eccc; - run_1ec00(); return; - case 0x1f1e8: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1f1f8; - pc=0x41600; - run_41600(); return; - case 0x1f1f8: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1ee84; - run_1ee00(); return; - case 0x1f200: - pc=0x1f200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1f200() throws ExecutionException { /* 0x1f200 - 0x1f400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1f200: - case 0x1f204: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1f214; - pc=0x41600; - run_41600(); return; - case 0x1f214: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1efc4; - run_1ee00(); return; - case 0x1f400: - pc=0x1f400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_1f400() throws ExecutionException { /* 0x1f400 - 0x1f600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x1f400: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r29 = r29 + -56; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - r17 = 7 << 16; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - r23 = 7 << 16; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r16 = r0 + r0; - r17 = r17 + -7236; - r23 = r23 + -6228; - case 0x1f44c: - r3 = r2 & 255; - r3 = r17 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r3 & 64; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1f50c; - continue; - } - case 0x1f468: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r3 == r5) { - /* Next insn is delay slot */ - pc=0x1f750; - run_1f600(); return; - } case 0x1f484: - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r6 = r3 + 1; - r3 = r5 + r3; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r16 = r16 + 1; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1f580; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x1f458; continue; } - r2 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x1f4cc: - r3 = r0 + 10; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x1f44c; - continue; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r4 = r4 + 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - r3 = r2 & 255; - r3 = r17 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r3 & 64; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x1f468; - continue; - } - case 0x1f50c: - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x1f524; - continue; - } - r4 = 7 << 16; - r4 = r4 + -6844; - /* Next insn is delay slot */ - r31=0x1f524; - pc=0x1b000; - run_1b000(); return; - case 0x1f524: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x1f534; - pc=0x17c00; - run_17c00(); return; - case 0x1f534: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r4 + r0; - /* Next insn is delay slot */ - r31=0x1f548; - pc=0x18000; - run_18000(); return; - case 0x1f548: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r2 = r16 + r0; - r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; + case 0x1f48c: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + writePages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff] = r19; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r19 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r29 = r29 + 64; + /* Next insn is delay slot */ + pc = r31; return; - case 0x1f580: - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r30 = r0 + r0; - r19 = r0 + -1; - r20 = r0 + 13; - r18 = r0 + 10; - case 0x1f594: - r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1f914; - run_1f800(); return; - } - case 0x1f5a0: - r5 = r5 << 2; - r5 = r23 + r5; - r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r4; - return; - case 0x1f5b8: - if(r30 == r19) { - /* Next insn is delay slot */ - pc=0x1f644; - run_1f600(); return; - } - case 0x1f5c0: - if(r30 == r20) { - /* Next insn is delay slot */ - pc=0x1f644; - run_1f600(); return; - } - if(r30 == r18) { - /* Next insn is delay slot */ - pc=0x1f644; - run_1f600(); return; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1f5d8: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1f76c; - run_1f600(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; case 0x1f600: - pc=0x1f600; + pc = 0x1f600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_1f600() throws ExecutionException { /* 0x1f600 - 0x1f800 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x1f600: - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1f614: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1f5b8; - run_1f400(); return; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1f63c; - pc=0x1ba00; - run_1ba00(); return; - case 0x1f63c: - if(r30 != r19) { - /* Next insn is delay slot */ - pc=0x1f5c0; - run_1f400(); return; - } - case 0x1f644: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = r0 + 1; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r4; - r5 = r0 + 1; - /* Next insn is delay slot */ - pc=0x1f5a0; - run_1f400(); return; - case 0x1f65c: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1f9fc; - run_1f800(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1f698: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1f6c0; + r2 = 6 << 16; + r2 = readPages[(r2 + -10304) >>> 12][((r2 + -10304) >>> 2) & 0x3ff]; + r29 = r29 + -32; + r2 = r2 < 3 ? 1 : 0; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + r17 = r5 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x1f688; continue; } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1f6c0; - pc=0x1ba00; - run_1ba00(); return; - case 0x1f6c0: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - case 0x1f6c4: - r4 = r0 + -1; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1f9a4; - run_1f800(); return; - } - r4 = r30 & 255; - r4 = r17 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r4 & 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1f73c; - continue; - } - r4 = r0 + 32; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1f95c; - run_1f800(); return; - } - r4 = r30 < 33 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x1f938; - run_1f800(); return; - } - r4 = r0 + 59; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1f974; - run_1f800(); return; - } - r4 = r0 + 125; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1f9e4; - run_1f800(); return; - } - r3 = r0 + 58; - if(r30 == r3) { - /* Next insn is delay slot */ - pc=0x1f9d4; - run_1f800(); return; - } - case 0x1f72c: - r2 = 7 << 16; - r4 = r2 + -6740; - /* Next insn is delay slot */ - r31=0x1f73c; - pc=0x1b000; - run_1b000(); return; - case 0x1f73c: - r2 = r30 << 24; - r2 = r2 >> 24; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1f4cc; - run_1f400(); return; - case 0x1f750: - /* Next insn is delay slot */ - r31=0x1f758; - pc=0x17800; - run_17800(); return; - case 0x1f758: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1f484; - run_1f400(); return; - case 0x1f76c: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1f77c; - pc=0x41600; - run_41600(); return; - case 0x1f77c: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1f614; - continue; - case 0x1f788: - r2 = r0 + 125; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1f4cc; - run_1f400(); return; - case 0x1f79c: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1fa18; - run_1fa00(); return; - } - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1f7d8: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1f800; - run_1f800(); return; - } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1f800; - pc=0x1ba00; - run_1ba00(); return; - case 0x1f800: - pc=0x1f800; + case 0x1f62c: + r4 = r17 + r0; + r5 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x1f63c; + pc = 0x23200; + run_23200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x1f63c: + /* Next insn is delay slot */ + r31 = 0x1f644; + pc = 0x21000; + run_21000(); + return; + case 0x1f644: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 13; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x1f668; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 28716; + /* Next insn is delay slot */ + r31 = 0x1f668; + pc = 0x20600; + run_20600(); + return; + case 0x1f668: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x40600; + run_40600(); + return; + case 0x1f688: + r4 = 5 << 16; + r4 = r4 + 28688; + /* Next insn is delay slot */ + r31 = 0x1f698; + pc = 0x45a00; + run_45a00(); + return; + case 0x1f698: + /* Next insn is delay slot */ + pc = 0x1f62c; + continue; + case 0x1f800: + pc = 0x1f800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_1f800() throws ExecutionException { /* 0x1f800 - 0x1fa00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x1f800: - if(r30 != r18) { - /* Next insn is delay slot */ - pc=0x1f644; - run_1f600(); return; - } - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = r0 + r0; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x1f5a0; - run_1f400(); return; - case 0x1f81c: - r2 = r0 + 5; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + 10; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1f4cc; - run_1f400(); return; - case 0x1f834: - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r21 = r0 + 9; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r22 = r0 + 32; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x1f8d0; + r2 = 6 << 16; + r2 = r2 + -10308; + r3 = r5 + r0; + r5 = readPages[(r2 + 28) >>> 12][((r2 + 28) >>> 2) & 0x3ff]; + r29 = r29 + -48; + r7 = r6 + r0; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x1f89c; continue; } - case 0x1f854: - r3 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r30 = tmp; - case 0x1f870: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1f898; + r6 = readPages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r5 = r5 + 28752; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x1f8b4; continue; } - r4 = r30 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1f898; - pc=0x1ba00; - run_1ba00(); return; - case 0x1f898: - if(r30 == r21) { - /* Next insn is delay slot */ - pc=0x1f8a8; - continue; - } - if(r30 != r22) { - /* Next insn is delay slot */ - pc=0x1f644; - run_1f600(); return; - } - case 0x1f8a8: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r2; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x1f854; - continue; - } - case 0x1f8d0: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1f8e0; - pc=0x41600; - run_41600(); return; - case 0x1f8e0: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1f870; - continue; - case 0x1f8ec: - r2 = r0 + 13; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1f4cc; - run_1f400(); return; - case 0x1f900: - r2 = r0 + 10; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1f4cc; - run_1f400(); return; - case 0x1f914: - r4 = 7 << 16; - r4 = r4 + -6700; - /* Next insn is delay slot */ - r31=0x1f924; - pc=0x1b800; - run_1b800(); return; - case 0x1f924: - r3 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1f594; - run_1f400(); return; - case 0x1f938: - r4 = r0 + 10; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1f98c; - continue; - } - r4 = r0 + 13; - if(r30 == r4) { - /* Next insn is delay slot */ - pc=0x1f9bc; - continue; - } - r4 = r0 + 9; - if(r30 != r4) { - /* Next insn is delay slot */ - pc=0x1f72c; - run_1f600(); return; - } - case 0x1f95c: - r2 = r0 + 2; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + 32; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1f4cc; - run_1f400(); return; - case 0x1f974: - r2 = r0 + 6; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1f4cc; - run_1f400(); return; - case 0x1f98c: - r2 = r0 + 3; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1f4cc; - run_1f400(); return; - case 0x1f9a4: - r2 = r0 + 8; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1f4cc; - run_1f400(); return; - case 0x1f9bc: - r2 = r0 + 4; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1f4cc; - run_1f400(); return; - case 0x1f9d4: - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1f4cc; - run_1f400(); return; - case 0x1f9e4: - r2 = r0 + 7; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x1f4cc; - run_1f400(); return; - case 0x1f9fc: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - case 0x1fa00: - pc=0x1fa00; + case 0x1f838: + r8 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 32) >>> 12][((r2 + 32) >>> 2) & 0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r5; + r5 = readPages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff]; + r6 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r5; + r5 = readPages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r5; + r5 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r5; + r5 = readPages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff]; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r4; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r5; + r5 = 5 << 16; + r4 = r2 + r0; + r5 = r5 + 28792; + r6 = r3 + r0; + /* Next insn is delay slot */ + r31 = 0x1f88c; + pc = 0x42000; + run_42000(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x1f88c: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1f89c: + r5 = 5 << 16; + r6 = readPages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff]; + r5 = r5 + 20504; + r3 = r5 + r0; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x1f838; + continue; + } + case 0x1f8b4: + r9 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r8 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + r10 = readPages[(r2 + 32) >>> 12][((r2 + 32) >>> 2) & 0x3ff]; + r6 = readPages[(r9 + 0) >>> 12][((r9 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r9 + 4) >>> 12][((r9 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r8 + 8) >>> 12][((r8 + 8) >>> 2) & 0x3ff]; + r5 = 5 << 16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r8 + 12) >>> 12][((r8 + 12) >>> 2) & 0x3ff]; + r5 = r5 + 28760; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r4; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r3; + r4 = r10 + r0; + r7 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x1f900; + pc = 0x42000; + run_42000(); + return; + case 0x1f900: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x1fa00: + pc = 0x1fa00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_1fa00() throws ExecutionException { /* 0x1fa00 - 0x1fc00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x1fa00: - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1fa0c; - pc=0x41600; - run_41600(); return; - case 0x1fa0c: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1f698; - run_1f600(); return; - case 0x1fa18: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1fa28; - pc=0x41600; - run_41600(); return; - case 0x1fa28: - r30 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1f7d8; - run_1f600(); return; - case 0x1fc00: - pc=0x1fc00; + r2 = r0 + 33; + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = r0 + 3; + writePages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff] = r2; + r2 = r0 + 10; + writePages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r3 = r0 + 1; + r2 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r4 + 36) >>> 12][((r4 + 36) >>> 2) & 0x3ff] = r3; + writePages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff] = r3; + r3 = 1 << 16; + writePages[(r4 + 32) >>> 12][((r4 + 32) >>> 2) & 0x3ff] = r2; + r5 = r0 + 7; + r2 = r0 + -1; + writePages[(r4 + 60) >>> 12][((r4 + 60) >>> 2) & 0x3ff] = r3; + r3 = r0 + 256; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 24) >>> 12][((r4 + 24) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 28) >>> 12][((r4 + 28) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 40) >>> 12][((r4 + 40) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 44) >>> 12][((r4 + 44) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 48) >>> 12][((r4 + 48) >>> 2) & 0x3ff] = r0; + writePages[(r4 + 52) >>> 12][((r4 + 52) >>> 2) & 0x3ff] = r5; + writePages[(r4 + 64) >>> 12][((r4 + 64) >>> 2) & 0x3ff] = r3; + writePages[(r4 + 68) >>> 12][((r4 + 68) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 72) >>> 12][((r4 + 72) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 76) >>> 12][((r4 + 76) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x1fc00: + pc = 0x1fc00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_1fc00() throws ExecutionException { /* 0x1fc00 - 0x1fe00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x1fc00: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r29 = r29 + -56; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r21; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r20; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1fef0; - run_1fe00(); return; - } - case 0x1fc38: - r3 = r0 + 60; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x1fe9c; - run_1fe00(); return; - } - r3 = r0 + 34; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x1fd44; - continue; - } - r16 = r0 + 34; - case 0x1fc54: - /* Next insn is delay slot */ - r31=0x1fc5c; - pc=0x1c600; - run_1c600(); return; - case 0x1fc5c: - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x1ff28; - run_1fe00(); return; - } - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r18 = 7 << 16; - r17 = r0 + 10; - r19 = r0 + 13; - r20 = r0 + -1; - r18 = r18 + -6680; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1fd18; - continue; - } - case 0x1fc84: - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x1fecc; - run_1fe00(); return; - } - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r3 == r5) { - /* Next insn is delay slot */ - pc=0x1fdf8; - continue; - } - r5 = r4 + r0; - case 0x1fcac: - r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r6 = r3 + 1; - r3 = r4 + r3; - writePages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff] = r6; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x1fd60; - continue; - } - r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r4 = r3 + 1; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r4; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1fc84; - continue; - } - case 0x1fcfc: - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x1fd08; - pc=0x1b000; - run_1b000(); return; - case 0x1fd08: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1fc84; - continue; - } - case 0x1fd18: - r2 = r0 + 1; - case 0x1fd1c: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r21 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r20 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; + r2 = readPages[(r28 + -31344) >>> 12][((r28 + -31344) >>> 2) & 0x3ff]; + writePages[(r28 + -31344) >>> 12][((r28 + -31344) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = r31; return; - case 0x1fd44: - r4 = 7 << 16; - r4 = r4 + -6532; - /* Next insn is delay slot */ - r31=0x1fd54; - pc=0x1b000; - run_1b000(); return; - case 0x1fd54: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x1fd1c; - continue; - case 0x1fd60: - r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = r3 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; - if(r3 < 0) { - /* Next insn is delay slot */ - pc=0x1fe80; - run_1fe00(); return; - } - r3 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r21 = tmp; - case 0x1fd9c: - r2 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x1fdc4; - continue; - } - r4 = r21 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x1fdc4; - pc=0x1ba00; - run_1ba00(); return; - case 0x1fdc4: - if(r21 == r17) { - /* Next insn is delay slot */ - pc=0x1fe5c; - run_1fe00(); return; - } - if(r21 == r19) { - /* Next insn is delay slot */ - pc=0x1fe38; - run_1fe00(); return; - } - if(r21 == r20) { - /* Next insn is delay slot */ - pc=0x1fe14; - run_1fe00(); return; - } - r2 = r21 << 24; - r2 = r2 >> 24; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x1fc84; - continue; - } - /* Next insn is delay slot */ - pc=0x1fcfc; - continue; - case 0x1fdf8: - /* Next insn is delay slot */ - r31=0x1fe00; - pc=0x17800; - run_17800(); return; case 0x1fe00: - pc=0x1fe00; + pc = 0x1fe00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_1fe00() throws ExecutionException { /* 0x1fe00 - 0x20000 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x1fe00: - r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1fcac; - run_1fc00(); return; - case 0x1fe14: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r0 + 8; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r4 = r18 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1fe30; - pc=0x1b000; - run_1b000(); return; - case 0x1fe30: - /* Next insn is delay slot */ - pc=0x1fd08; - run_1fc00(); return; - case 0x1fe38: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r0 + 4; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r4 = r18 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1fe54; - pc=0x1b000; - run_1b000(); return; - case 0x1fe54: - /* Next insn is delay slot */ - pc=0x1fd08; - run_1fc00(); return; - case 0x1fe5c: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = r0 + 3; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r4 = r18 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x1fe78; - pc=0x1b000; - run_1b000(); return; - case 0x1fe78: - /* Next insn is delay slot */ - pc=0x1fd08; - run_1fc00(); return; - case 0x1fe80: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x1fe90; - pc=0x41600; - run_41600(); return; - case 0x1fe90: - r21 = r2 + r0; - /* Next insn is delay slot */ - pc=0x1fd9c; - run_1fc00(); return; - case 0x1fe9c: - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x1ff0c; - continue; - } - r5 = readPages[(r28+-30676)>>>12][((r28+-30676)>>>2)&0x3ff]; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x1ff44; - continue; - } - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r16 = r0 + 62; - /* Next insn is delay slot */ - r31=0x1fec4; - pc=0x17e00; - run_17e00(); return; - case 0x1fec4: - /* Next insn is delay slot */ - pc=0x1fc54; - run_1fc00(); return; - case 0x1fecc: - /* Next insn is delay slot */ - r31=0x1fed4; - pc=0x1c000; - run_1c000(); return; - case 0x1fed4: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x1fee4; - pc=0x17c00; - run_17c00(); return; - case 0x1fee4: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x1fd1c; - run_1fc00(); return; - case 0x1fef0: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - r31=0x1fefc; - pc=0x1c000; - run_1c000(); return; - case 0x1fefc: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x1fc38; - run_1fc00(); return; - case 0x1ff0c: - r4 = 7 << 16; - r4 = r4 + -6608; - /* Next insn is delay slot */ - r31=0x1ff1c; - pc=0x1b000; - run_1b000(); return; - case 0x1ff1c: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x1fd1c; - run_1fc00(); return; - case 0x1ff28: - r4 = 7 << 16; - r4 = r4 + -6492; - /* Next insn is delay slot */ - r31=0x1ff38; - pc=0x1b000; - run_1b000(); return; - case 0x1ff38: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x1fd1c; - run_1fc00(); return; - case 0x1ff44: - r4 = 7 << 16; - r4 = r4 + -6572; - /* Next insn is delay slot */ - r31=0x1ff54; - pc=0x1b000; - run_1b000(); return; - case 0x1ff54: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x1fd1c; - run_1fc00(); return; - case 0x20000: - pc=0x20000; + r2 = readPages[(r28 + -31348) >>> 12][((r28 + -31348) >>> 2) & 0x3ff]; + writePages[(r28 + -31348) >>> 12][((r28 + -31348) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x20000: + pc = 0x20000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_20000() throws ExecutionException { /* 0x20000 - 0x20200 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x20000: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r29 = r29 + -24; - r3 = r0 + 32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x20060; - continue; - } - case 0x20018: - r3 = r0 + 44; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x20038; - continue; - } - r2 = r0 + r0; - case 0x20028: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + r2 = readPages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff]; + r2 = r2 | 4; + writePages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = r31; return; - case 0x20038: - /* Next insn is delay slot */ - r31=0x20040; - pc=0x1c000; - run_1c000(); return; - case 0x20040: - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x20074; - continue; - } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x20060: - /* Next insn is delay slot */ - r31=0x20068; - pc=0x1c000; - run_1c000(); return; - case 0x20068: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x20018; - continue; - case 0x20074: - /* Next insn is delay slot */ - r31=0x2007c; - pc=0x1c000; - run_1c000(); return; - case 0x2007c: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x20028; - continue; case 0x20200: - pc=0x20200; + pc = 0x20200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_20200() throws ExecutionException { /* 0x20200 - 0x20400 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x20200: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r29 = r29 + -24; - r3 = r0 + 43; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x20264; - continue; - } - r16 = r0 + r0; - case 0x20220: - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x20244; - continue; - } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r16 + r0; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + r2 = readPages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff]; + r2 = r2 | 8; + writePages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = r31; return; - case 0x20244: - /* Next insn is delay slot */ - r31=0x2024c; - pc=0x1c000; - run_1c000(); return; - case 0x2024c: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r16 + r0; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x20264: - /* Next insn is delay slot */ - r31=0x2026c; - pc=0x1c000; - run_1c000(); return; - case 0x2026c: - r3 = r0 + 49; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x202b0; - continue; - } - r3 = r0 + 50; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x202c8; - continue; - } - r3 = r0 + 51; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x202d4; - continue; - } - r4 = 7 << 16; - r4 = r4 + -6472; - /* Next insn is delay slot */ - r31=0x202a0; - pc=0x1b000; - run_1b000(); return; - case 0x202a0: - r16 = r0 + r0; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x20220; - continue; - case 0x202b0: - r16 = r0 + 1; - case 0x202b4: - /* Next insn is delay slot */ - r31=0x202bc; - pc=0x1c000; - run_1c000(); return; - case 0x202bc: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x20220; - continue; - case 0x202c8: - r16 = r0 + 2; - /* Next insn is delay slot */ - pc=0x202b4; - continue; - case 0x202d4: - r16 = r0 + 4; - /* Next insn is delay slot */ - pc=0x202b4; - continue; case 0x20400: - pc=0x20400; + pc = 0x20400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_20400() throws ExecutionException { /* 0x20400 - 0x20600 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x20400: - r29 = r29 + -24; - r4 = r0 + 128; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x20414; - pc=0x17600; - run_17600(); return; - case 0x20414: - r4 = r0 + 128; - writePages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x20424; - pc=0x17600; - run_17600(); return; + r29 = r29 + -72; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r6; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r4; + r16 = r5 + r0; + /* Next insn is delay slot */ + r31 = 0x20424; + pc = 0x23400; + run_23400(); + return; case 0x20424: - writePages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-32236)>>>12][((r28+-32236)>>>2)&0x3ff]; - r4 = readPages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff]; - r3 = r2 << 1; - r5 = r2 << 4; - r2 = r2 << 6; - r5 = r2 - r5; - writePages[(r28+-32236)>>>12][((r28+-32236)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x2044c; - pc=0x40600; - run_40600(); return; - case 0x2044c: - writePages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x20468; + r4 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x20430; + pc = 0x37800; + run_37800(); + return; + case 0x20430: + r4 = r29 + 16; + r17 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x20440; + pc = 0x1ae00; + run_1ae00(); + return; + case 0x20440: + r2 = readPages[(r28 + -31344) >>> 12][((r28 + -31344) >>> 2) & 0x3ff]; + r6 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x204a4; continue; } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + r2 = readPages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff]; + r2 = r2 & 4; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x204a4; + continue; + } + case 0x20464: + r4 = r17 + r0; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x20474; + pc = 0x37a00; + run_37a00(); return; - case 0x20468: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -6876; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=0x1b200; - run_1b200(); return; + case 0x20474: + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x2048c; + continue; + } + r4 = r17 + r0; + r5 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x2048c; + pc = 0x37c00; + run_37c00(); + return; + case 0x2048c: + r31 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r29 = r29 + 72; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x204a4: + r2 = 6 << 16; + r3 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r2 + -26200; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x20464; + continue; + } + r2 = r0 + 1; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x20464; + continue; case 0x20600: - pc=0x20600; + pc = 0x20600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_20600() throws ExecutionException { /* 0x20600 - 0x20800 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x20600: - r29 = r29 + -48; - r4 = r29 + 16; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x20628; - pc=0x1e400; - run_1e400(); return; - case 0x20628: - r2 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - r4 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x20998; - run_20800(); return; - } - case 0x2064c: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x20660; - pc=0x17e00; - run_17e00(); return; - case 0x20660: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x20674; - pc=0x17e00; - run_17e00(); return; - case 0x20674: - r4 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x20684; - pc=0x17c00; - run_17c00(); return; - case 0x20684: - r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - r5 = r0 + 32; - /* Next insn is delay slot */ - r31=0x20694; - pc=0x17c00; - run_17c00(); return; - case 0x20694: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x209b0; - run_20800(); return; - } - case 0x206a4: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = r0 + 123; - r19 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x207d0; + r29 = r29 + -24; + r2 = r4 < -3 ? 1 : 0; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x20648; continue; } - r17 = r0 + 126; - r16 = r0 + 46; - r18 = r0 + 44; - r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - if(r2 == r17) { - /* Next insn is delay slot */ - pc=0x20748; - continue; - } - case 0x206d4: - r5 = r0 + 118; - /* Next insn is delay slot */ - r31=0x206e0; - pc=0x17c00; - run_17c00(); return; - case 0x206e0: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x2077c; - continue; - } - case 0x206f0: - /* Next insn is delay slot */ - r31=0x206f8; - pc=0x1dc00; - run_1dc00(); return; - case 0x206f8: - /* Next insn is delay slot */ - r31=0x20700; - pc=0x20000; - run_20000(); return; - case 0x20700: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x207ac; - continue; - } - case 0x20708: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2097c; - run_20800(); return; - } - case 0x20724: - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r2 + 1; - r2 = r3 + r2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - if(r2 != r17) { - /* Next insn is delay slot */ - pc=0x206d4; - continue; - } - case 0x20748: - r5 = r0 + 86; - /* Next insn is delay slot */ - r31=0x20754; - pc=0x17c00; - run_17c00(); return; - case 0x20754: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + 126; - /* Next insn is delay slot */ - r31=0x20764; - pc=0x17c00; - run_17c00(); return; - case 0x20764: - /* Next insn is delay slot */ - r31=0x2076c; - pc=0x1c000; - run_1c000(); return; - case 0x2076c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x206f0; - continue; - } - case 0x2077c: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + 46; - /* Next insn is delay slot */ - r31=0x2078c; - pc=0x17c00; - run_17c00(); return; - case 0x2078c: - /* Next insn is delay slot */ - r31=0x20794; - pc=0x1c000; - run_1c000(); return; - case 0x20794: - /* Next insn is delay slot */ - r31=0x2079c; - pc=0x1dc00; - run_1dc00(); return; - case 0x2079c: - /* Next insn is delay slot */ - r31=0x207a4; - pc=0x20000; - run_20000(); return; - case 0x207a4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x20708; - continue; - } - case 0x207ac: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 123; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x207cc; - continue; - } - r4 = 7 << 16; - r4 = r4 + -6860; - /* Next insn is delay slot */ - r31=0x207cc; - pc=0x1b200; - run_1b200(); return; - case 0x207cc: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - case 0x207d0: - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x207dc; - pc=0x17c00; - run_17c00(); return; - case 0x207dc: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x207e8; - pc=0x17a00; - run_17a00(); return; - case 0x207e8: - r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - r5 = r0 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x207fc; - pc=0x17c00; - run_17c00(); return; - case 0x207fc: - r2 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - case 0x20800: - pc=0x20800; + case 0x20614: + r4 = r5 + r0; + r6 = 5 << 16; + r5 = 5 << 16; + r5 = r5 + 28832; + r6 = r6 + 28844; + /* Next insn is delay slot */ + r31 = 0x20630; + pc = 0x1f800; + run_1f800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x20630: + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x2063c; + pc = 0x11e00; + run_11e00(); + return; + case 0x2063c: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x20648; + pc = 0x40200; + run_40200(); + return; + case 0x20648: + r2 = r0 + -2; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x206cc; + continue; + } + r2 = r4 < -1 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x20728; + continue; + } + r2 = r0 + -1; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x20698; + continue; + } + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x20734; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r5 + r0; + r6 = 5 << 16; + r5 = 5 << 16; + r5 = r5 + 28884; + r6 = r6 + 28892; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x1f800; + run_1f800(); + return; + case 0x20698: + r2 = readPages[(r28 + -31348) >>> 12][((r28 + -31348) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x206bc; + continue; + } + r2 = readPages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff]; + r2 = r2 & 8; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x20758; + continue; + } + case 0x206bc: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x206cc: + r4 = r5 + r0; + r6 = 5 << 16; + r5 = 5 << 16; + r5 = r5 + 28836; + r6 = r6 + 28860; + /* Next insn is delay slot */ + r31 = 0x206e8; + pc = 0x1f800; + run_1f800(); + return; + case 0x206e8: + r3 = 6 << 16; + r3 = r3 + -10328; + r2 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; + r2 = r2 + 1; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r2; + r3 = 6 << 16; + r3 = readPages[(r3 + -10288) >>> 12][((r3 + -10288) >>> 2) & 0x3ff]; + r2 = r2 < r3 ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x207c8; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x20728: + r2 = r0 + -3; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x20614; + continue; + } + case 0x20734: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r5 + r0; + r6 = 5 << 16; + r5 = 5 << 16; + r5 = r5 + 28900; + r6 = r6 + 28908; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x1f800; + run_1f800(); + return; + case 0x20758: + r4 = r5 + r0; + r6 = 5 << 16; + r5 = 5 << 16; + r5 = r5 + 28868; + r6 = r6 + 28876; + /* Next insn is delay slot */ + r31 = 0x20774; + pc = 0x1f800; + run_1f800(); + return; + case 0x20774: + r2 = 6 << 16; + r2 = r2 + -10328; + r3 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r3 = r3 + 1; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + r3 = 6 << 16; + r3 = r3 + -10308; + r4 = readPages[(r3 + 44) >>> 12][((r3 + 44) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x206bc; + continue; + } + r4 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r4 = r4 + 1; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r4; + r2 = readPages[(r3 + 20) >>> 12][((r3 + 20) >>> 2) & 0x3ff]; + r4 = r4 < r2 ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x206bc; + continue; + } + case 0x207c8: + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x207d4; + pc = 0x11e00; + run_11e00(); + return; + case 0x207d4: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x207e0; + pc = 0x40200; + run_40200(); + return; + case 0x207e0: + case 0x20800: + pc = 0x20800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_20800() throws ExecutionException { /* 0x20800 - 0x20a00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x20800: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x20814; - pc=0x17e00; - run_17e00(); return; - case 0x20814: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x20824; - pc=0x17c00; - run_17c00(); return; - case 0x20824: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + 15856; - r6 = r19 + r0; - r7 = r0 + 1; - /* Next insn is delay slot */ - r31=0x20840; - pc=0x31200; - run_31200(); return; - case 0x20840: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x208a0; + r29 = r29 + -32; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x20810; + pc = 0x44600; + run_44600(); + return; + case 0x20810: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x20828; continue; } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r16 = 7 << 16; - r17 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r4 = r16 + -6052; - /* Next insn is delay slot */ - r31=0x20860; - pc=0x1ac00; - run_1ac00(); return; - case 0x20860: - r3 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r4 = r16 + -6052; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r3 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r3 = 7 << 16; - r3 = r3 + -6192; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - r3 = 7 << 16; - r3 = r3 + -6180; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x208a0; - pc=0x1b200; - run_1b200(); return; - case 0x208a0: - r4 = r0 + 20; - /* Next insn is delay slot */ - r31=0x208ac; - pc=0x1b400; - run_1b400(); return; - case 0x208ac: - r16 = r2 + r0; - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r18 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x208d0; - pc=0x10268; - run_10200(); return; - case 0x208d0: - r17 = r2 + 1; - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x208e0; - pc=0x1b400; - run_1b400(); return; - case 0x208e0: - r4 = r2 + r0; - r5 = r18 + r0; - r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x208f4; - pc=0x48fdc; - run_48e00(); return; - case 0x208f4: - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; - r18 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x20914; - pc=0x10268; - run_10200(); return; - case 0x20914: - r17 = r2 + 1; - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x20924; - pc=0x1b400; - run_1b400(); return; - case 0x20924: - r4 = r2 + r0; - r5 = r18 + r0; - r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x20938; - pc=0x48fdc; - run_48e00(); return; - case 0x20938: - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r20; - r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x2094c; - pc=0x1d400; - run_1d400(); return; - case 0x2094c: - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r2; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x20828: + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29820; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x20840; + pc = 0x20600; + run_20600(); + return; + case 0x20840: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2097c: - /* Next insn is delay slot */ - r31=0x20984; - pc=0x17800; - run_17800(); return; - case 0x20984: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x20724; - run_20600(); return; - case 0x20998: - r5 = r0 + 46; - /* Next insn is delay slot */ - r31=0x209a4; - pc=0x17c00; - run_17c00(); return; - case 0x209a4: - r4 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x2064c; - run_20600(); return; - case 0x209b0: - /* Next insn is delay slot */ - r31=0x209b8; - pc=0x1c000; - run_1c000(); return; - case 0x209b8: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x206a4; - run_20600(); return; case 0x20a00: - pc=0x20a00; + pc = 0x20a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_20a00() throws ExecutionException { /* 0x20a00 - 0x20c00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x20a00: - r2 = readPages[(r28+-32760)>>>12][((r28+-32760)>>>2)&0x3ff]; - r29 = r29 + -96; - r2 = r2 + -1; - writePages[(r28+-32760)>>>12][((r28+-32760)>>>2)&0x3ff] = r2; - writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r31; - writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r22; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r21; - writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r20; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r19; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r18; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r17; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r16; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x20e64; - run_20e00(); return; - } - case 0x20a38: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x20a44; - pc=0x1e400; - run_1e400(); return; - case 0x20a44: - r2 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - r4 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x20e24; - run_20e00(); return; - } - case 0x20a68: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x20a7c; - pc=0x17e00; - run_17e00(); return; - case 0x20a7c: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x20a90; - pc=0x17e00; - run_17e00(); return; - case 0x20a90: - r4 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x20aa0; - pc=0x17c00; - run_17c00(); return; - case 0x20aa0: - r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - r5 = r0 + 32; - /* Next insn is delay slot */ - r31=0x20ab0; - pc=0x17c00; - run_17c00(); return; - case 0x20ab0: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x20e50; - run_20e00(); return; - } - case 0x20ac0: - r19 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x20bdc; + r2 = readPages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff]; + r29 = r29 + -24; + r3 = r2 & 2; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x20a34; continue; } - r20 = 7 << 16; - r17 = r0 + r0; - r16 = r0 + r0; - r20 = r20 + -6876; - r18 = r0 + 126; - /* Next insn is delay slot */ - pc=0x20b2c; - continue; - case 0x20ae8: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - if(r2 == r18) { - /* Next insn is delay slot */ - pc=0x20b88; - continue; - } - case 0x20af8: - r5 = r0 + 118; - /* Next insn is delay slot */ - r31=0x20b04; - pc=0x17c00; - run_17c00(); return; - case 0x20b04: - r4 = readPages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff]; - r16 = r16 + 1; - r4 = r4 + r17; - /* Next insn is delay slot */ - r31=0x20b18; - pc=0x16400; - run_16400(); return; - case 0x20b18: - /* Next insn is delay slot */ - r31=0x20b20; - pc=0x20000; - run_20000(); return; - case 0x20b20: - r17 = r17 + 24; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x20bdc; - continue; - } - case 0x20b2c: - r2 = readPages[(r28+-32236)>>>12][((r28+-32236)>>>2)&0x3ff]; - r3 = r16 < r2 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x20ae8; - continue; - } - r3 = r2 << 1; - r5 = r2 << 4; - r4 = readPages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff]; - r2 = r2 << 6; - r5 = r2 - r5; - writePages[(r28+-32236)>>>12][((r28+-32236)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x20b60; - pc=0x40600; - run_40600(); return; - case 0x20b60: - writePages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff] = r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x20ae8; - continue; - } - r4 = r20 + r0; - /* Next insn is delay slot */ - r31=0x20b78; - pc=0x1b200; - run_1b200(); return; - case 0x20b78: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - if(r2 != r18) { - /* Next insn is delay slot */ - pc=0x20af8; - continue; - } - case 0x20b88: - r5 = r0 + 86; - /* Next insn is delay slot */ - r31=0x20b94; - pc=0x17c00; - run_17c00(); return; - case 0x20b94: - /* Next insn is delay slot */ - r31=0x20b9c; - pc=0x1c000; - run_1c000(); return; - case 0x20b9c: - r4 = r29 + 52; - /* Next insn is delay slot */ - r31=0x20ba8; - pc=0x1e400; - run_1e400(); return; - case 0x20ba8: - r21 = readPages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff]; - r4 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r5 = r0 + r0; - r21 = r21 + r17; - /* Next insn is delay slot */ - r31=0x20bc0; - pc=0x2f400; - run_2f400(); return; - case 0x20bc0: - writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x20bcc; - pc=0x20000; - run_20000(); return; - case 0x20bcc: - r16 = r16 + 1; - r17 = r17 + 24; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x20b2c; - continue; - } - case 0x20bdc: - r4 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x20bec; - pc=0x17c00; - run_17c00(); return; - case 0x20bec: - r2 = readPages[(r28+-30724)>>>12][((r28+-30724)>>>2)&0x3ff]; - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x20c04; - pc=0x17e00; - run_17e00(); return; - case 0x20c00: - pc=0x20c00; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r2 | 2; + writePages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x20a34: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x20a48; + pc = 0x20600; + run_20600(); + return; + case 0x20a48: + /* Next insn is delay slot */ + r31 = 0x20a50; + pc = 0x23e00; + run_23e00(); + return; + case 0x20a50: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x20c00: + pc = 0x20c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_20c00() throws ExecutionException { /* 0x20c00 - 0x20e00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x20c00: - case 0x20c04: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x20c14; - pc=0x17c00; - run_17c00(); return; - case 0x20c14: - r5 = 7 << 16; - r4 = r29 + 60; - r5 = r5 + 15856; - r6 = r19 + r0; - r7 = r0 + r0; - /* Next insn is delay slot */ - r31=0x20c30; - pc=0x31200; - run_31200(); return; - case 0x20c30: - r2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x20e7c; - run_20e00(); return; - } - r17 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r5 = 7 << 16; - r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - r4 = r29 + 36; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r2 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - r5 = r5 + -6084; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - r2 = r0 + 1; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r2 = readPages[(r17+12)>>>12][((r17+12)>>>2)&0x3ff]; - r7 = r0 + r0; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - r6 = readPages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff]; - r2 = r29 + 16; - r20 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r19 = tmp; - writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r2; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r0; - r21 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x20c98; - pc=0x2e400; - run_2e400(); return; - case 0x20c98: - /* Next insn is delay slot */ - r31=0x20ca0; - pc=0x1c000; - run_1c000(); return; - case 0x20ca0: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x20d94; + r2 = readPages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff]; + r29 = r29 + -96; + r2 = r2 & 1; + writePages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = r16; + r17 = r4 + r0; + r18 = r5 + r0; + r19 = r6 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x20c48; continue; } - r18 = 7 << 16; - r22 = 7 << 16; - r16 = r0 + r0; - r18 = r18 + 16944; - r22 = r22 + -6076; - /* Next insn is delay slot */ - pc=0x20d18; - continue; - case 0x20ccc: - r4 = r29 + 52; - /* Next insn is delay slot */ - r31=0x20cd8; - pc=0x1e400; - run_1e400(); return; - case 0x20cd8: - r4 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x20ce8; - pc=0x2f400; - run_2f400(); return; - case 0x20ce8: - r5 = readPages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff]; - r4 = r2 + r0; - r5 = r5 + r16; - r6 = r0 + 24; - /* Next insn is delay slot */ - r31=0x20d00; - pc=0x48fdc; - run_48e00(); return; - case 0x20d00: - /* Next insn is delay slot */ - r31=0x20d08; - pc=0x20000; - run_20000(); return; - case 0x20d08: - r16 = r16 + 24; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x20d94; + r2 = 6 << 16; + r2 = readPages[(r2 + -10300) >>> 12][((r2 + -10300) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x20ce8; continue; } - case 0x20d14: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - case 0x20d18: - r2 = r0 + 126; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x20ccc; - continue; - } - /* Next insn is delay slot */ - r31=0x20d2c; - pc=0x1c000; - run_1c000(); return; - case 0x20d2c: - r4 = r29 + 52; - /* Next insn is delay slot */ - r31=0x20d38; - pc=0x1e400; - run_1e400(); return; - case 0x20d38: - r6 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r4 = r29 + 56; - r5 = r18 + r0; - r7 = r0 + 1; - /* Next insn is delay slot */ - r31=0x20d50; - pc=0x31200; - run_31200(); return; - case 0x20d50: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x20d68; - continue; - } - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x20e3c; - run_20e00(); return; - } - case 0x20d68: - r2 = readPages[(r28+-30728)>>>12][((r28+-30728)>>>2)&0x3ff]; - r2 = r2 + r16; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r16 = r16 + 24; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x20d8c; - pc=0x20000; - run_20000(); return; - case 0x20d8c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x20d14; - continue; - } - case 0x20d94: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r3 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x20dac; - pc=0x1a400; - run_1a400(); return; - case 0x20dac: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r2 = r0 + 125; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x20dcc; - continue; - } - r4 = 7 << 16; - r4 = r4 + -7708; - /* Next insn is delay slot */ - r31=0x20dcc; - pc=0x1b800; - run_1b800(); return; - case 0x20dcc: - r4 = r29 + 36; - /* Next insn is delay slot */ - r31=0x20dd8; - pc=0x2e600; - run_2e600(); return; - case 0x20dd8: - writePages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff] = r21; - writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r20; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r19&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x20dec; - pc=0x1ce00; - run_1ce00(); return; - case 0x20dec: - r2 = readPages[(r28+-32760)>>>12][((r28+-32760)>>>2)&0x3ff]; - r31 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r2 = r2 + 1; - r22 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r21 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - case 0x20e00: - pc=0x20e00; + case 0x20c48: + r4 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x20c54; + pc = 0x37800; + run_37800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x20c54: + r4 = r29 + 48; + r16 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x20c64; + pc = 0x2ce00; + run_2ce00(); + return; + case 0x20c64: + r2 = 6 << 16; + r2 = r2 + -26200; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r4 = r16 + r0; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r5 = r29 + 16; + r6 = r19 + r0; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x20ca0; + pc = 0x37a00; + run_37a00(); + return; + case 0x20ca0: + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x20d18; + continue; + } + case 0x20ca8: + /* Next insn is delay slot */ + r31 = 0x20cb0; + pc = 0x2de00; + run_2de00(); + return; + case 0x20cb0: + writePages[(r16 + 44) >>> 12][((r16 + 44) >>> 2) & 0x3ff] = r2; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x20cc8; + continue; + } + r4 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x20cc8; + pc = 0x36800; + run_36800(); + return; + case 0x20cc8: + r31 = readPages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + r29 = r29 + 96; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x20ce8: + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x20c48; + continue; + } + r5 = 5 << 16; + r4 = r0 + -1; + r5 = r5 + 28916; + /* Next insn is delay slot */ + r31 = 0x20d10; + pc = 0x20600; + run_20600(); + return; + case 0x20d10: + /* Next insn is delay slot */ + pc = 0x20c48; + continue; + case 0x20d18: + r4 = r16 + r0; + r5 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x20d28; + pc = 0x37c00; + run_37c00(); + return; + case 0x20d28: + /* Next insn is delay slot */ + pc = 0x20ca8; + continue; + case 0x20e00: + pc = 0x20e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_20e00() throws ExecutionException { /* 0x20e00 - 0x21000 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x20e00: - r20 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r19 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r18 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r17 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r16 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - writePages[(r28+-32760)>>>12][((r28+-32760)>>>2)&0x3ff] = r2; - r29 = r29 + 96; - /* Next insn is delay slot */ - pc=r31; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r29 = r29 + -24; + r2 = r0 + 63; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x20e78; + continue; + } + case 0x20e20: + /* Next insn is delay slot */ + r31 = 0x20e28; + pc = 0x25c00; + run_25c00(); + return; + case 0x20e28: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r6 = tmp; + r3 = r0 + 61; + r4 = r16 + r0; + r5 = r2 + r0; + if (r6 == r3) { + /* Next insn is delay slot */ + pc = 0x20e58; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r6 = r0 + r0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x20c00; + run_20c00(); return; - case 0x20e24: - r5 = r0 + 46; - /* Next insn is delay slot */ - r31=0x20e30; - pc=0x17c00; - run_17c00(); return; - case 0x20e30: - r4 = readPages[(r28+-30720)>>>12][((r28+-30720)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x20a68; - run_20a00(); return; - case 0x20e3c: - r4 = r22 + r0; - /* Next insn is delay slot */ - r31=0x20e48; - pc=0x1b000; - run_1b000(); return; - case 0x20e48: - /* Next insn is delay slot */ - pc=0x20d68; - run_20c00(); return; - case 0x20e50: - /* Next insn is delay slot */ - r31=0x20e58; - pc=0x1c000; - run_1c000(); return; case 0x20e58: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x20ac0; - run_20a00(); return; - case 0x20e64: - r4 = 7 << 16; - r4 = r4 + -6168; - /* Next insn is delay slot */ - r31=0x20e74; - pc=0x1b200; - run_1b200(); return; - case 0x20e74: - /* Next insn is delay slot */ - pc=0x20a38; - run_20a00(); return; - case 0x20e7c: - r4 = 7 << 16; - r4 = r4 + -6124; - /* Next insn is delay slot */ - r31=0x20e8c; - pc=0x1b000; - run_1b000(); return; - case 0x20e8c: - /* Next insn is delay slot */ - r31=0x20e94; - pc=0x1c800; - run_1c800(); return; - case 0x20e94: - /* Next insn is delay slot */ - pc=0x20dec; - run_20c00(); return; - case 0x21000: - pc=0x21000; + r6 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x20e64; + pc = 0x20400; + run_20400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x20e64: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x24000; + run_24000(); + return; + case 0x20e78: + /* Next insn is delay slot */ + r31 = 0x20e80; + pc = 0x38600; + run_38600(); + return; + case 0x20e80: + /* Next insn is delay slot */ + pc = 0x20e20; + continue; + case 0x21000: + pc = 0x21000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_21000() throws ExecutionException { /* 0x21000 - 0x21200 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x21000: - r29 = r29 + -32; - r3 = r6 & 255; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - r16 = r5 + r0; - r5 = r6 & 65280; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r2 = ((r0 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x21028; + r29 = r29 + -64; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x21034; + pc = 0x23400; + run_23400(); + return; + case 0x21034: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r0 + 125; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x210f8; continue; } - r2 = r2 | 2; - case 0x21028: - r5 = 255 << 16; - r5 = r6 & r5; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x21094; + r3 = r0 + 13; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x210f8; continue; } - r2 = r2 | 4; - case 0x2103c: - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x210b8; - continue; - } - r2 = r2 & r4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x21290; - run_21200(); return; - } - case 0x21050: - r2 = r0 + 2; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x211b0; - continue; - } - r2 = r0 + 4; - if(r4 != r2) { - /* Next insn is delay slot */ - pc=0x21220; - run_21200(); return; - } + r22 = 5 << 16; + r17 = 5 << 16; + r16 = 6 << 16; + r22 = r22 + 29340; + r23 = 5 << 16; + r17 = r17 + 29080; case 0x21068: - r4 = r6 >>> 16; - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r4 & 255; - /* Next insn is delay slot */ - pc=r2; - r31=0x2107c; + writePages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff] = r0; + case 0x2106c: + addr = r16 + -10308; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x21320; + run_21200(); + return; + } + r2 = r2 & 255; + r3 = (r2 & 0xffffffffL) < (65 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x212b8; + run_21200(); + return; + } + r3 = r2 << 2; + r3 = r17 + r3; + r3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r3; return; - case 0x2107c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x26200; - run_26200(); return; - case 0x21094: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2103c; + case 0x210a4: + r2 = readPages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff]; + r2 = r2 | 1; + writePages[(r28 + -31352) >>> 12][((r28 + -31352) >>> 2) & 0x3ff] = r2; + case 0x210b4: + /* Next insn is delay slot */ + r31 = 0x210bc; + pc = 0x23400; + run_23400(); + return; + case 0x210bc: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2106c; continue; } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -3048; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x1b000; - run_1b000(); return; - case 0x210b8: - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r5 = r4 & 7; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x211dc; + case 0x210cc: + /* Next insn is delay slot */ + r31 = 0x210d4; + pc = 0x2d200; + run_2d200(); + return; + case 0x210d4: + /* Next insn is delay slot */ + r31 = 0x210dc; + pc = 0x23400; + run_23400(); + return; + case 0x210dc: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r0 + 125; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x210f8; continue; } - r5 = r2 + -1; - r5 = (r5&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x212d0; - run_21200(); return; - } - r5 = r0 + 4; - if(r2 == r5) { - /* Next insn is delay slot */ - pc=0x21068; + r3 = r0 + 13; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x21068; continue; } - r5 = r4 & 32; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x21240; - run_21200(); return; + case 0x210f8: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 64; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2112c: + /* Next insn is delay slot */ + r31 = 0x21134; + pc = 0x20a00; + run_20a00(); + return; + case 0x21134: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x212f0; + run_21200(); + return; } - r5 = r2 & 1; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x2110c; + case 0x2113c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + case 0x21144: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2106c; continue; } - r5 = r4 & 8; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x21268; - run_21200(); return; - } - case 0x2110c: - r5 = r2 & 2; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x21170; - continue; - } - r2 = r2 & 4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x21268; - run_21200(); return; - } - r4 = r4 & 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x21068; - continue; - } - r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r2 = r0 | 32768; - r3 = r3 + r2; - r2 = 1 << 16; - r2 = r2 | 32768; - r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x21068; - continue; - } - r4 = 7 << 16; - r4 = r4 + -3084; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x21164; - pc=0x1ac00; - run_1ac00(); return; - case 0x21164: - r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x21068; + /* Next insn is delay slot */ + pc = 0x210cc; continue; - case 0x21170: - r4 = r4 & 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x211b0; - continue; - } - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r2 = r2 + 128; - r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x211b0; - continue; - } - r4 = 7 << 16; - r4 = r4 + -3084; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x211a8; - pc=0x1ac00; - run_1ac00(); return; - case 0x211a8: - r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - case 0x211b0: - r4 = r6 >>> 8; - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r4 & 255; - /* Next insn is delay slot */ - pc=r2; - r31=0x211c4; + case 0x21154: + /* Next insn is delay slot */ + r31 = 0x2115c; + pc = 0x20a00; + run_20a00(); return; - case 0x211c4: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x26000; - run_26000(); return; - case 0x211dc: - r4 = r2 & r4; - r5 = r4 & 1; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x21268; - run_21200(); return; + case 0x2115c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2113c; + continue; } - r4 = r4 & 2; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x211b0; + r18 = 6 << 16; + r4 = r18 + -24536; + r30 = r18 + -24536; + /* Next insn is delay slot */ + r31 = 0x21178; + pc = 0x1c400; + run_1c400(); + return; + case 0x21178: + r21 = r30 + r0; + r20 = r0 + 45; + r19 = r0 + 45; + /* Next insn is delay slot */ + pc = 0x211b0; + continue; + case 0x2118c: + r4 = readPages[(r18 + -24536) >>> 12][((r18 + -24536) >>> 2) & 0x3ff]; + r5 = r2 + 1; + r2 = r4 + r2; + writePages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff] = r5; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r20 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + r31 = 0x211a8; + pc = 0x23400; + run_23400(); + return; + case 0x211a8: + if (r2 != r19) { + /* Next insn is delay slot */ + pc = 0x211f8; + continue; + } + case 0x211b0: + r2 = readPages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r30 + 8) >>> 12][((r30 + 8) >>> 2) & 0x3ff]; + if (r2 != r4) { + /* Next insn is delay slot */ + pc = 0x2118c; + continue; + } + r4 = r21 + r0; + /* Next insn is delay slot */ + r31 = 0x211d0; + pc = 0x1c600; + run_1c600(); + return; + case 0x211d0: + r2 = readPages[(r21 + 4) >>> 12][((r21 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r18 + -24536) >>> 12][((r18 + -24536) >>> 2) & 0x3ff]; + r5 = r2 + 1; + r2 = r4 + r2; + writePages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff] = r5; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r20 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + r31 = 0x211f0; + pc = 0x23400; + run_23400(); + return; + case 0x211f0: + if (r2 == r19) { + /* Next insn is delay slot */ + pc = 0x211b0; continue; } case 0x211f8: - r2 = r2 & 4; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x21068; - continue; - } + r4 = r21 + r0; + r5 = r0 + r0; case 0x21200: - pc=0x21200; + pc = 0x21200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_21200() throws ExecutionException { /* 0x21200 - 0x21400 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x21200: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -6936; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x1b000; - run_1b000(); return; + /* Next insn is delay slot */ + r31 = 0x21208; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x21208: + r2 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + r5 = r0 + r0; + r4 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r6 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x21220; + pc = 0x20c00; + run_20c00(); + return; case 0x21220: - r2 = r0 + 1; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x21268; - continue; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2106c; + run_21000(); + return; } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = 0x210cc; + run_21000(); + return; + case 0x21238: + /* Next insn is delay slot */ + r31 = 0x21240; + pc = 0x23400; + run_23400(); return; case 0x21240: - r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - if(r4 < 0) { - /* Next insn is delay slot */ - pc=0x212dc; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r0 + 46; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x21278; continue; } - r5 = r2 & 1; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x212ac; + r3 = r0 + 64; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x21278; continue; } - r5 = r4 < 256 ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x212ac; + r2 = r2 & 255; + r2 = r2 + r22; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + r2 = r2 & 64; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x213e0; continue; } - case 0x21268: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r3 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x21278; - return; case 0x21278: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x25e00; - run_25e00(); return; - case 0x21290: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -6028; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x1b000; - run_1b000(); return; - case 0x212ac: - r3 = r2 & 2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x211f8; - run_21000(); return; - } - r3 = 1 << 16; - r4 = r4 < r3 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x211b0; - run_21000(); return; - } - /* Next insn is delay slot */ - pc=0x211f8; - run_21000(); return; - case 0x212d0: - r4 = r2 + r0; - /* Next insn is delay slot */ - pc=0x21050; - run_21000(); return; - case 0x212dc: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -5984; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x1b000; - run_1b000(); return; - case 0x21400: - pc=0x21400; + /* Next insn is delay slot */ + r31 = 0x21280; + pc = 0x26e00; + run_26e00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x21280: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2106c; + run_21000(); + return; + } + /* Next insn is delay slot */ + pc = 0x210cc; + run_21000(); + return; + case 0x21298: + /* Next insn is delay slot */ + r31 = 0x212a0; + pc = 0x36200; + run_36200(); + return; + case 0x212a0: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2106c; + run_21000(); + return; + } + /* Next insn is delay slot */ + pc = 0x210cc; + run_21000(); + return; + case 0x212b8: + r2 = r22 + r2; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x21340; + continue; + } + r4 = r0 + -2; + r5 = r23 + 29596; + /* Next insn is delay slot */ + r31 = 0x212dc; + pc = 0x20600; + run_20600(); + return; + case 0x212dc: + /* Next insn is delay slot */ + r31 = 0x212e4; + pc = 0x23e00; + run_23e00(); + return; + case 0x212e4: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x21144; + run_21000(); + return; + case 0x212f0: + r4 = r29 + 16; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x21300; + pc = 0x25000; + run_25000(); + return; + case 0x21300: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2113c; + run_21000(); + return; + } + r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x21314; + pc = 0x20e00; + run_20e00(); + return; + case 0x21314: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x21144; + run_21000(); + return; + case 0x21320: + /* Next insn is delay slot */ + r31 = 0x21328; + pc = 0x36400; + run_36400(); + return; + case 0x21328: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2106c; + run_21000(); + return; + } + /* Next insn is delay slot */ + pc = 0x210cc; + run_21000(); + return; + case 0x21340: + r3 = 6 << 16; + r2 = readPages[(r3 + -10224) >>> 12][((r3 + -10224) >>> 2) & 0x3ff]; + r18 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x21358; + pc = 0x25200; + run_25200(); + return; + case 0x21358: + r4 = r2 + r0; + /* Next insn is delay slot */ + pc = r18; + r31 = 0x21364; + return; + case 0x21364: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2113c; + run_21000(); + return; + } + /* Next insn is delay slot */ + r31 = 0x21374; + pc = 0x20a00; + run_20a00(); + return; + case 0x21374: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2113c; + run_21000(); + return; + } + r3 = 6 << 16; + r5 = readPages[(r3 + -24536) >>> 12][((r3 + -24536) >>> 2) & 0x3ff]; + r4 = r0 + -96; + addr = r5 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x21510; + run_21400(); + return; + } + r30 = r3 + -24536; + r3 = readPages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff]; + r3 = (r3 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x213bc; + continue; + } + r3 = r0 + -62; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x21500; + run_21400(); + return; + } + case 0x213bc: + r4 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x213c8; + pc = 0x20e00; + run_20e00(); + return; + case 0x213c8: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2106c; + run_21000(); + return; + } + /* Next insn is delay slot */ + pc = 0x210cc; + run_21000(); + return; + case 0x213e0: + /* Next insn is delay slot */ + r31 = 0x213e8; + pc = 0x20a00; + run_20a00(); + return; + case 0x213e8: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2113c; + run_21000(); + return; + } + r18 = 6 << 16; + r4 = r18 + -24536; + /* Next insn is delay slot */ + r31 = 0x21400; + pc = 0x1c400; + run_1c400(); + return; + case 0x21400: + pc = 0x21400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_21400() throws ExecutionException { /* 0x21400 - 0x21600 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x21400: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r29 = r29 + -40; - r3 = r0 + 32; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; - r16 = r4 + r0; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2161c; - run_21600(); return; - } - case 0x21424: - r3 = r0 + 35; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x21544; - continue; - } - r3 = r0 + 91; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x214a8; - continue; - } - /* Next insn is delay slot */ - r31=0x21444; - pc=0x1c000; - run_1c000(); return; - case 0x21444: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x21450; - pc=0x15c00; - run_15c00(); return; - case 0x21450: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x2145c; - pc=0x32200; - run_32200(); return; - case 0x2145c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + r4 = r18 + -24536; + r5 = r0 + 43; + /* Next insn is delay slot */ + r31 = 0x21410; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x21410: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - r2 = r0 + 93; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x216dc; - run_21600(); return; + r2 = r0 + 43; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x214b4; + continue; } - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x2147c; - pc=0x1b000; - run_1b000(); return; - case 0x2147c: - r2 = r0 + r0; - case 0x21480: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x2148c; - pc=0x1ce00; - run_1ce00(); return; - case 0x2148c: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + r30 = r18 + -24536; + r21 = r30 + r0; + r20 = r0 + 43; + r19 = r0 + 43; + /* Next insn is delay slot */ + pc = 0x21464; + continue; + case 0x21438: + r4 = readPages[(r18 + -24536) >>> 12][((r18 + -24536) >>> 2) & 0x3ff]; + r5 = r2 + 1; + r2 = r4 + r2; + writePages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff] = r5; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r20 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + r31 = 0x21454; + pc = 0x23400; + run_23400(); return; - case 0x214a8: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x214b4; - pc=0x16200; - run_16200(); return; - case 0x214b4: - r4 = r16 + r0; - r17 = r2 + r0; - /* Next insn is delay slot */ - r31=0x214c4; - pc=0x32200; - run_32200(); return; - case 0x214c4: - r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = r3 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x21590; - continue; - } - r2 = r0 + 16; - r16 = r0 + r0; - case 0x214e0: - r3 = r3 & 128; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x214f0; - continue; - } - r16 = r2 + r0; - case 0x214f0: - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x21640; - run_21600(); return; - } - case 0x214f8: - /* Next insn is delay slot */ - r31=0x21500; - pc=0x20000; - run_20000(); return; - case 0x21500: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x21630; - run_21600(); return; - } - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + case 0x21454: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - r2 = r2 + -83; - r2 = r2 & 255; - r3 = (r2&0xffffffffL) < (39&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x215fc; + if (r2 != r19) { + /* Next insn is delay slot */ + pc = 0x214b4; continue; } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -5280; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x21544: - /* Next insn is delay slot */ - r31=0x2154c; - pc=0x1c000; - run_1c000(); return; - case 0x2154c: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x21558; - pc=0x15c00; - run_15c00(); return; - case 0x21558: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x21564; - pc=0x32000; - run_32000(); return; - case 0x21564: - r2 = r0 + 64; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x21574; - pc=0x1ce00; - run_1ce00(); return; - case 0x21574: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x21590: - r2 = r0 + 144; - r16 = r0 + 128; - /* Next insn is delay slot */ - pc=0x214e0; - continue; - case 0x215a0: - r17 = r0 + 2; - case 0x215a4: - /* Next insn is delay slot */ - r31=0x215ac; - pc=0x1c000; - run_1c000(); return; - case 0x215ac: - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x21730; - run_21600(); return; + case 0x21464: + r2 = readPages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r30 + 8) >>> 12][((r30 + 8) >>> 2) & 0x3ff]; + if (r2 != r4) { + /* Next insn is delay slot */ + pc = 0x21438; + continue; } - r2 = r17 | r16; - case 0x215bc: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x215c8; - pc=0x1ce00; - run_1ce00(); return; - case 0x215c8: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + r4 = r21 + r0; + /* Next insn is delay slot */ + r31 = 0x21484; + pc = 0x1c600; + run_1c600(); + return; + case 0x21484: + r2 = readPages[(r21 + 4) >>> 12][((r21 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r18 + -24536) >>> 12][((r18 + -24536) >>> 2) & 0x3ff]; + r5 = r2 + 1; + r2 = r4 + r2; + writePages[(r30 + 4) >>> 12][((r30 + 4) >>> 2) & 0x3ff] = r5; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r20 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + r31 = 0x214a4; + pc = 0x23400; + run_23400(); + return; + case 0x214a4: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r19) { + /* Next insn is delay slot */ + pc = 0x21464; + continue; + } + case 0x214b4: + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x214c0; + pc = 0x38400; + run_38400(); + return; + case 0x214c0: + r4 = r18 + -24536; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x214d0; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x214d0: + r2 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + r5 = r0 + r0; + r4 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r6 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x214e8; + pc = 0x20c00; + run_20c00(); + return; + case 0x214e8: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2106c; + run_21000(); + return; + } + /* Next insn is delay slot */ + pc = 0x210cc; + run_21000(); + return; + case 0x21500: + addr = r5 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r4) { + /* Next insn is delay slot */ + pc = 0x213bc; + run_21200(); + return; + } + case 0x21510: + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x213bc; + run_21200(); + return; + } + r5 = 5 << 16; + r4 = r0 + -1; + r5 = r5 + 28952; + /* Next insn is delay slot */ + r31 = 0x21538; + pc = 0x20600; + run_20600(); + return; + case 0x21538: + /* Next insn is delay slot */ + pc = 0x213bc; + run_21200(); return; - case 0x215e4: - r17 = r0 + 3; - /* Next insn is delay slot */ - pc=0x215a4; - continue; - case 0x215f0: - r17 = r0 + 1; - /* Next insn is delay slot */ - pc=0x215a4; - continue; - case 0x215fc: - r4 = 7 << 16; case 0x21600: - pc=0x21600; + pc = 0x21600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_21600() throws ExecutionException { /* 0x21600 - 0x21800 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x21600: - r4 = r4 + -6980; - r17 = r0 + r0; - /* Next insn is delay slot */ - r31=0x21610; - pc=0x1b000; - run_1b000(); return; - case 0x21610: - r2 = r17 | r16; - /* Next insn is delay slot */ - pc=0x215bc; - run_21400(); return; - case 0x2161c: - /* Next insn is delay slot */ - r31=0x21624; - pc=0x1c000; - run_1c000(); return; - case 0x21624: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - /* Next insn is delay slot */ - pc=0x21424; - run_21400(); return; - case 0x21630: - r17 = r0 + r0; - r2 = r17 | r16; - /* Next insn is delay slot */ - pc=0x215bc; - run_21400(); return; + r29 = r29 + -24; + r3 = r0 + 32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x21680; + continue; + } + case 0x21618: + r3 = r0 + 123; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x21638; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x21638: + /* Next insn is delay slot */ + r31 = 0x21640; + pc = 0x21000; + run_21000(); + return; case 0x21640: - /* Next insn is delay slot */ - r31=0x21648; - pc=0x20000; - run_20000(); return; - case 0x21648: - r17 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x216b0; - continue; - } - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r2 + -83; - r2 = r2 & 255; - r3 = (r2&0xffffffffL) < (39&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x21798; - continue; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -5124; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x21690: - r17 = r0 + 8; - case 0x21694: - /* Next insn is delay slot */ - r31=0x2169c; - pc=0x1c000; - run_1c000(); return; - case 0x2169c: - r3 = r0 + 32; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x216b0; - continue; - } - /* Next insn is delay slot */ - r31=0x216b0; - pc=0x1c000; - run_1c000(); return; - case 0x216b0: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - r2 = r0 + 41; - r16 = r16 | r17; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x217f4; + r2 = r0 + 125; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x21664; continue; } - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x216d4; - pc=0x1b000; - run_1b000(); return; - case 0x216d4: - /* Next insn is delay slot */ - pc=0x214f8; - run_21400(); return; - case 0x216dc: - /* Next insn is delay slot */ - r31=0x216e4; - pc=0x1c000; - run_1c000(); return; - case 0x216e4: - /* Next insn is delay slot */ - r31=0x216ec; - pc=0x20000; - run_20000(); return; - case 0x216ec: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x217e8; - continue; - } - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29784; + /* Next insn is delay slot */ + r31 = 0x21664; + pc = 0x20600; + run_20600(); + return; + case 0x21664: + /* Next insn is delay slot */ + r31 = 0x2166c; + pc = 0x23400; + run_23400(); + return; + case 0x2166c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x21680: + /* Next insn is delay slot */ + r31 = 0x21688; + pc = 0x23400; + run_23400(); + return; + case 0x21688: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - r2 = r2 + -83; - r2 = r2 & 255; - r3 = (r2&0xffffffffL) < (39&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x217b4; - continue; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -4968; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x21730: - /* Next insn is delay slot */ - r31=0x21738; - pc=0x1c000; - run_1c000(); return; - case 0x21738: - r2 = r17 | r16; - /* Next insn is delay slot */ - pc=0x215bc; - run_21400(); return; - case 0x21744: - r17 = r0 + 4; - /* Next insn is delay slot */ - pc=0x21694; + /* Next insn is delay slot */ + pc = 0x21618; continue; - case 0x21750: - r17 = r0 + 12; - /* Next insn is delay slot */ - pc=0x21694; - continue; - case 0x2175c: - r16 = r0 + 34; - case 0x21760: - /* Next insn is delay slot */ - r31=0x21768; - pc=0x1c000; - run_1c000(); return; - case 0x21768: - r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x217d4; - continue; - } - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x21480; - run_21400(); return; - case 0x21780: - r16 = r0 + 33; - /* Next insn is delay slot */ - pc=0x21760; - continue; - case 0x2178c: - r16 = r0 + 35; - /* Next insn is delay slot */ - pc=0x21760; - continue; - case 0x21798: - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x217a8; - pc=0x1b000; - run_1b000(); return; - case 0x217a8: - r17 = r0 + r0; - /* Next insn is delay slot */ - pc=0x216b0; - continue; - case 0x217b4: - r4 = 7 << 16; - r4 = r4 + -6980; - r16 = r0 + 32; - /* Next insn is delay slot */ - r31=0x217c8; - pc=0x1b000; - run_1b000(); return; - case 0x217c8: - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x21480; - run_21400(); return; - case 0x217d4: - /* Next insn is delay slot */ - r31=0x217dc; - pc=0x1c000; - run_1c000(); return; - case 0x217dc: - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x21480; - run_21400(); return; - case 0x217e8: - r2 = r0 + 32; - /* Next insn is delay slot */ - pc=0x21480; - run_21400(); return; - case 0x217f4: - /* Next insn is delay slot */ - r31=0x217fc; - pc=0x1c000; - run_1c000(); return; - case 0x217fc: - /* Next insn is delay slot */ - pc=0x214f8; - run_21400(); return; case 0x21800: - pc=0x21800; + pc = 0x21800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_21800() throws ExecutionException { /* 0x21800 - 0x21a00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x21800: - case 0x21a00: - pc=0x21a00; + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + r5 = r4 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2181c; + continue; + } + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x2181c: + r4 = r0 + -1; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x21a00: + pc = 0x21a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_21a00() throws ExecutionException { /* 0x21a00 - 0x21c00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x21a00: - r29 = r29 + -136; - r6 = r5 + r0; - r5 = r29 + 104; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r20; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r19; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r18; - writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r17; - writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x21a2c; - pc=0x31000; - run_31000(); return; + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + r17 = r5 + r0; + r5 = 5 << 16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r5 = r5 + 29004; + r16 = r4 + r0; + r4 = r0 + -1; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x21a2c; + pc = 0x20600; + run_20600(); + return; case 0x21a2c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x21b60; - continue; - } - r16 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - r2 = r16 >> 10; - r3 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; - r17 = r16 & 255; - r18 = r16 & 768; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x21dc8; - run_21c00(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -4812; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r5 = r5 + 29032; + r6 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x21a48; + pc = 0x42000; + run_42000(); return; - case 0x21a74: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x21a80; - pc=0x15c00; - run_15c00(); return; - case 0x21a80: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x21a8c; - pc=0x32200; - run_32200(); return; - case 0x21a8c: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r3 = r4 & r3; - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x21e38; - run_21e00(); return; - } - r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r3 = r0 | 65535; - r4 = r6 | 65535; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x22058; - run_22000(); return; - } - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r6 = r6 - r2; - r6 = r6 + -2; - r16 = r6 & 65535; - r6 = r6 & 32768; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x21aec; - continue; - } - r2 = 65535 << 16; - r16 = r16 + r2; - case 0x21aec: - r2 = r16 + 128; - r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x21b34; - continue; - } - r2 = r16 < -128 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x22268; - run_22200(); return; - } - r7 = r0 + -128; - r7 = r7 - r16; - case 0x21b10: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5772; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x21b28; - pc=0x42000; - run_42000(); return; - case 0x21b28: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x21b34; - pc=0x1b000; - run_1b000(); return; - case 0x21b34: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x21b44; + case 0x21a48: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r5 = r16 + r0; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r0 + -3; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); return; - case 0x21b44: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r16 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x21b54; - return; - case 0x21b54: - /* Next insn is delay slot */ - r31=0x21b5c; - pc=0x1ce00; - run_1ce00(); return; - case 0x21b5c: - r2 = r0 + 1; - case 0x21b60: - r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; - r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; - r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x21b84: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x21b90; - pc=0x15c00; - run_15c00(); return; - case 0x21b90: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x21b9c; - pc=0x32200; - run_32200(); return; - case 0x21b9c: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r3 = r4 & r3; - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x21e8c; - run_21e00(); return; - } - r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r3 = r0 | 65535; - r4 = r6 | 65535; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x22084; - run_22000(); return; - } - r16 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r16 = r6 - r16; - r16 = r16 + -3; - r16 = r16 & 65535; - case 0x21be8: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x21bf8; - return; - case 0x21bf8: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x21c04; - pc=0x26000; - run_26000(); return; case 0x21c00: - pc=0x21c00; + pc = 0x21c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_21c00() throws ExecutionException { /* 0x21c00 - 0x21e00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x21c00: - case 0x21c04: - /* Next insn is delay slot */ - r31=0x21c0c; - pc=0x1ce00; - run_1ce00(); return; - case 0x21c0c: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21b60; - run_21a00(); return; - case 0x21c18: - /* Next insn is delay slot */ - r31=0x21c20; - pc=0x15e00; - run_15e00(); return; - case 0x21c20: - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x21c2c; - pc=0x20000; - run_20000(); return; - case 0x21c2c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x21e44; - run_21e00(); return; - } - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x21c44; - pc=0x1b000; - run_1b000(); return; - case 0x21c44: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21b60; - run_21a00(); return; - case 0x21c50: - r19 = r29 + 16; - /* Next insn is delay slot */ - r31=0x21c5c; - pc=0x20200; - run_20200(); return; - case 0x21c5c: - r4 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x21c6c; - pc=0x21400; - run_21400(); return; - case 0x21c6c: - r3 = (r2&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2203c; - run_22000(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -4784; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x21c98: - r19 = r29 + 16; - /* Next insn is delay slot */ - r31=0x21ca4; - pc=0x20200; - run_20200(); return; - case 0x21ca4: - r4 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x21cb4; - pc=0x21400; - run_21400(); return; - case 0x21cb4: - r3 = r0 + 3; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x22254; - run_22200(); return; - } - r3 = r2 < 4 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x21de8; + r3 = 6 << 16; + r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r29 = r29 + -40; + r3 = r3 + -26200; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + r18 = r4 + r0; + r16 = r5 + r0; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x21d3c; continue; } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x22240; - run_22200(); return; + r3 = 6 << 16; + r3 = r3 + -26240; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x21d74; + continue; } - r3 = r0 + 2; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x2203c; - run_22000(); return; + r3 = 6 << 16; + r3 = r3 + -26280; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x21c88; + continue; } - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2764; - case 0x21cec: - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x21d04; - pc=0x21000; - run_21000(); return; - case 0x21d04: - r2 = r0 + 1; - case 0x21d08: - r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; - r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; - r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; + r4 = 5 << 16; + r4 = r4 + 29060; + r5 = r0 + r0; + case 0x21c64: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x21a00; + run_21a00(); return; - case 0x21d2c: - /* Next insn is delay slot */ - r31=0x21d34; - pc=0x20200; - run_20200(); return; - case 0x21d34: - r4 = r29 + 16; - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x21d44; - pc=0x21400; - run_21400(); return; - case 0x21d44: - r3 = r0 + 16; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x220b0; - run_22000(); return; + case 0x21c88: + r18 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r2 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; + r17 = readPages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x21d00; + continue; } - r3 = r2 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x21e98; - run_21e00(); return; + case 0x21c9c: + r18 = r18 + 8; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x21cdc; + continue; } - r3 = r0 + 24; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x22134; - run_22000(); return; + case 0x21ca8: + r18 = r18 + 1; + addr = r18 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r4 = tmp; + addr = r16 + 8; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r20 = tmp; + r19 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x21cc0; + pc = 0x1dc00; + run_1dc00(); + return; + case 0x21cc0: + r2 = r2 ^ r20; + r4 = r2 & 255; + r17 = r17 + -1; + /* Next insn is delay slot */ + pc = r19; + r31 = 0x21cd4; + return; + case 0x21cd4: + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x21ca8; + continue; } - r3 = r0 + 32; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x2203c; - run_22000(); return; + case 0x21cdc: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x21d00: + r2 = r17 < 2 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x21c9c; + continue; + } + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 25992; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x21d3c: + r5 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x21dd4; + continue; } - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2996; - case 0x21d80: - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x21d98; - pc=0x21000; - run_21000(); return; - case 0x21d98: r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21d08; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x21e4c; + run_21e00(); + return; + } + r2 = r0 + 2; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x21e00; + run_21e00(); + return; + } + r4 = 5 << 16; + r4 = r4 + 29040; + /* Next insn is delay slot */ + pc = 0x21c64; continue; - case 0x21da4: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x21db4; + case 0x21d74: + r2 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r17 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + if (r2 == r17) { + /* Next insn is delay slot */ + pc = 0x21cdc; + continue; + } + case 0x21d8c: + r4 = r17 + 8; + r5 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x21d9c; + pc = 0x21c00; + continue; + case 0x21d9c: + r17 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + if (r2 != r17) { + /* Next insn is delay slot */ + pc = 0x21d8c; + continue; + } + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; return; - case 0x21db4: - /* Next insn is delay slot */ - r31=0x21dbc; - pc=0x1ce00; - run_1ce00(); return; - case 0x21dbc: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21b60; - run_21a00(); return; - case 0x21dc8: - r4 = 7 << 16; - r4 = r4 + -5732; - r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x21ddc; - pc=0x1b800; - run_1b800(); return; + case 0x21dd4: + r25 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r4 = r0 + r0; case 0x21ddc: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21d08; - continue; - case 0x21de8: - r3 = r0 + 64; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x22148; - run_22000(); return; - } - r3 = r0 + 128; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x2203c; - run_22000(); return; - } - case 0x21e00: - pc=0x21e00; + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r25; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x21e00: + pc = 0x21e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_21e00() throws ExecutionException { /* 0x21e00 - 0x22000 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x21e00: - r2 = 7 << 16; - r2 = r2 + -2920; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x2203c; - run_22000(); return; + r5 = readPages[(r4 + 20) >>> 12][((r4 + 20) >>> 2) & 0x3ff]; + r4 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + f0 = r5; + r25 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + f1 = r4; + r2 = fcsr; + r2 = fcsr; + r1 = r2 | 3; + r1 = r1 ^ 2; + fcsr = r1; + switch (fcsr & 3) { + case 0: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f0 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f0 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f0 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity } - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - r31=0x21e2c; + fcsr = r2; + r4 = f0; + /* Next insn is delay slot */ + pc = 0x21ddc; + run_21c00(); return; - case 0x21e2c: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21d08; - run_21c00(); return; - case 0x21e38: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x21b34; - run_21a00(); return; - case 0x21e44: - /* Next insn is delay slot */ - r31=0x21e4c; - pc=0x15e00; - run_15e00(); return; case 0x21e4c: - r18 = r2 + r0; - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x21e60; + r25 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r4 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x21ddc; + run_21c00(); return; - case 0x21e60: - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x21e6c; - pc=0x25e00; - run_25e00(); return; - case 0x21e6c: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x21e78; - pc=0x25e00; - run_25e00(); return; - case 0x21e78: - /* Next insn is delay slot */ - r31=0x21e80; - pc=0x1ce00; - run_1ce00(); return; - case 0x21e80: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21b60; - run_21a00(); return; - case 0x21e8c: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x21be8; - run_21a00(); return; - case 0x21e98: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2203c; - run_22000(); return; - } - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2948; - r2 = r17 + r2; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x21ec4; - pc=0x21000; - run_21000(); return; - case 0x21ec4: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21d08; - run_21c00(); return; - case 0x21ed0: - r2 = 7 << 16; - r2 = r2 + -2504; - case 0x21ed8: - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r6 = tmp; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x21ef0; - pc=0x21000; - run_21000(); return; - case 0x21ef0: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21d08; - run_21c00(); return; - case 0x21efc: - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2120; - case 0x21f08: - r2 = r17 + r2; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x21f20; - pc=0x21000; - run_21000(); return; - case 0x21f20: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21d08; - run_21c00(); return; - case 0x21f2c: - r2 = 7 << 16; - r2 = r2 + -2432; - r17 = r17 + r2; - r2 = 7 << 16; - r3 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r6 = tmp; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = r3 & 2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x21f98; - continue; - } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x21f98; - continue; - } - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x21f90; - continue; - } - r16 = r16 & 256; - r2 = r2 + 30664; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x22294; - run_22200(); return; - } - r20 = readPages[(r2+36)>>>12][((r2+36)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - case 0x21f84: - r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r2 = r0 + 2; - r20 = r2 - r20; - case 0x21f90: - r2 = r6 << 8; - r6 = r2 | r6; - case 0x21f98: - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x21fa8; - pc=0x21000; - run_21000(); return; - case 0x21fa8: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21d08; - run_21c00(); return; - case 0x21fb4: - r2 = 7 << 16; - r2 = r2 + -2612; - /* Next insn is delay slot */ - pc=0x21ed8; - continue; - case 0x21fc4: - r2 = 7 << 16; - r2 = r2 + -2360; - /* Next insn is delay slot */ - pc=0x21ed8; - continue; - case 0x21fd4: - r2 = 7 << 16; - r2 = r2 + -2540; - /* Next insn is delay slot */ - pc=0x21ed8; - continue; - case 0x21fe4: - r2 = 7 << 16; - r2 = r2 + -2396; - /* Next insn is delay slot */ - pc=0x21ed8; - continue; - case 0x21ff4: - r2 = 7 << 16; - r2 = r2 + -2468; - /* Next insn is delay slot */ - pc=0x21ed8; - continue; case 0x22000: - pc=0x22000; + pc = 0x22000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_22000() throws ExecutionException { /* 0x22000 - 0x22200 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x22000: - case 0x22004: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2324; - /* Next insn is delay slot */ - pc=0x21cec; - run_21c00(); return; - case 0x22018: - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2256; - /* Next insn is delay slot */ - pc=0x21f08; - run_21e00(); return; - case 0x2202c: - r2 = 7 << 16; - r2 = r2 + -2576; - /* Next insn is delay slot */ - pc=0x21ed8; - run_21e00(); return; - case 0x2203c: - r4 = 7 << 16; - r4 = r4 + -3048; - /* Next insn is delay slot */ - r31=0x2204c; - pc=0x1b000; - run_1b000(); return; - case 0x2204c: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21d08; - run_21c00(); return; - case 0x22058: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5800; - /* Next insn is delay slot */ - r31=0x2206c; - pc=0x42000; - run_42000(); return; - case 0x2206c: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x22078; - pc=0x1b000; - run_1b000(); return; - case 0x22078: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x21b34; - run_21a00(); return; - case 0x22084: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5800; - /* Next insn is delay slot */ - r31=0x22098; - pc=0x42000; - run_42000(); return; - case 0x22098: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x220a4; - pc=0x1b000; - run_1b000(); return; - case 0x220a4: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x21be8; - run_21a00(); return; - case 0x220b0: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2964; - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x220d4; - pc=0x21000; - run_21000(); return; - case 0x220d4: - addr=r29+27; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r2 = r0 + 255; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x21d04; - run_21c00(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x21d04; - run_21c00(); return; - } - r2 = 7 << 16; - r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x21d04; - run_21c00(); return; - } - r4 = 7 << 16; - r4 = r4 + -5840; - /* Next insn is delay slot */ - r31=0x22128; - pc=0x1ac00; - run_1ac00(); return; - case 0x22128: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21d08; - run_21c00(); return; - case 0x22134: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2980; - /* Next insn is delay slot */ - pc=0x21d80; - run_21c00(); return; - case 0x22148: - r2 = 7 << 16; - r2 = r2 + -2880; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r17 = 7 << 16; - r3 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = r3 & 2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x22274; - run_22200(); return; - } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x22274; - run_22200(); return; - } - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x221b0; + r2 = r4 + 128; + r29 = r29 + -24; + r2 = (r2 & 0xffffffffL) < (384 & 0xffffffffL) ? 1 : 0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x22034; continue; } - r16 = r16 & 256; - r3 = r17 + 30664; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x22280; - run_22200(); return; - } - r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - case 0x221a4: - r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r3 = r0 + 2; - r20 = r3 - r20; - case 0x221b0: - r16 = r2 << 8; - r16 = r16 | r2; - case 0x221b8: - r4 = r20 + r0; - r5 = r19 + r0; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x221cc; - pc=0x21000; - run_21000(); return; - case 0x221cc: - r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 & 4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x21d04; - run_21c00(); return; - } - addr=r29+27; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x21d04; - run_21c00(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - case 0x22200: - pc=0x22200; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29728; + /* Next insn is delay slot */ + r31 = 0x22034; + pc = 0x20600; + run_20600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x22034: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r16 + r0; + r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r25; + return; + case 0x22200: + pc = 0x22200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_22200() throws ExecutionException { /* 0x22200 - 0x22400 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x22200: - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x21d04; - run_21c00(); return; - } - r2 = r0 + 139; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x222a8; - continue; - } - r2 = r0 + 171; - if(r16 != r2) { - /* Next insn is delay slot */ - pc=0x21d04; - run_21c00(); return; - } - r4 = 7 << 16; - r4 = r4 + -5888; - /* Next insn is delay slot */ - r31=0x22234; - pc=0x1ac00; - run_1ac00(); return; - case 0x22234: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21d08; - run_21c00(); return; - case 0x22240: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2688; - /* Next insn is delay slot */ - pc=0x21cec; - run_21c00(); return; - case 0x22254: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2840; - /* Next insn is delay slot */ - pc=0x21cec; - run_21c00(); return; - case 0x22268: - r7 = r16 + -127; - /* Next insn is delay slot */ - pc=0x21b10; - run_21a00(); return; - case 0x22274: - r16 = r2 + r0; - /* Next insn is delay slot */ - pc=0x221b8; - run_22000(); return; - case 0x22280: - r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x221a4; - run_22000(); return; - case 0x22294: - r20 = readPages[(r2+40)>>>12][((r2+40)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x21f84; - run_21e00(); return; - case 0x222a8: - r4 = 7 << 16; - r4 = r4 + -5936; - /* Next insn is delay slot */ - r31=0x222b8; - pc=0x1ac00; - run_1ac00(); return; - case 0x222b8: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x21d08; - run_21c00(); return; - case 0x22400: - pc=0x22400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_22400() throws ExecutionException { /* 0x22400 - 0x22600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x22400: - r29 = r29 + -24; - r4 = r0 + 8; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x22414; - pc=0x17600; - run_17600(); return; - case 0x22414: - r5 = 7 << 16; - r4 = r28 + -30692; - r5 = r5 + 7760; - writePages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x2242c; - pc=0x30e00; - run_30e00(); return; - case 0x2242c: - r5 = 7 << 16; - r4 = r28 + -30696; - r5 = r5 + 7340; - /* Next insn is delay slot */ - r31=0x22440; - pc=0x30e00; - run_30e00(); return; - case 0x22440: - r5 = 7 << 16; - r4 = r28 + -30700; - r5 = r5 + 7320; - /* Next insn is delay slot */ - r31=0x22454; - pc=0x30e00; - run_30e00(); return; - case 0x22454: - r5 = 7 << 16; - r4 = r28 + -30704; - r5 = r5 + 7260; - /* Next insn is delay slot */ - r31=0x22468; - pc=0x30e00; - run_30e00(); return; - case 0x22468: - r5 = 7 << 16; - r4 = r28 + -30708; - r5 = r5 + 6860; - /* Next insn is delay slot */ - r31=0x2247c; - pc=0x30e00; - run_30e00(); return; - case 0x2247c: - r5 = 7 << 16; - r4 = r28 + -30712; - r5 = r5 + 6820; - /* Next insn is delay slot */ - r31=0x22490; - pc=0x30e00; - run_30e00(); return; - case 0x22490: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = r28 + -30716; - r5 = r5 + 6100; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=0x30e00; - run_30e00(); return; - case 0x22600: - pc=0x22600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_22600() throws ExecutionException { /* 0x22600 - 0x22800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x22600: - r2 = r0 + 3; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x22618; - continue; - } - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x22618: - r4 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r29 = r29 + -136; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r20; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r19; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r18; - writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r17; - writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x22644; - pc=0x18000; - run_18000(); return; - case 0x22644: - r4 = readPages[(r28+-30692)>>>12][((r28+-30692)>>>2)&0x3ff]; - r6 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - r5 = r29 + 104; - /* Next insn is delay slot */ - r31=0x22658; - pc=0x31000; - run_31000(); return; - case 0x22658: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2278c; - continue; - } - r16 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - r2 = r16 >> 10; - r3 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; - r17 = r16 & 255; - r18 = r16 & 768; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x22b5c; - run_22a00(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -4524; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x226a0: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x226ac; - pc=0x15c00; - run_15c00(); return; - case 0x226ac: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x226b8; - pc=0x32200; - run_32200(); return; - case 0x226b8: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r3 = r4 & r3; - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x22c14; - run_22c00(); return; - } - r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r3 = r0 | 65535; - r4 = r6 | 65535; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x22c64; - run_22c00(); return; - } - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r2 = r6 - r2; - r2 = r2 + -2; - r16 = r2 & 65535; - r2 = r2 & 32768; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x22718; - continue; - } - r2 = 65535 << 16; - r16 = r16 + r2; - case 0x22718: - r2 = r16 + 128; - r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x22760; - continue; - } - r2 = r16 < -128 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x22e74; - run_22e00(); return; - } - r7 = r0 + -128; - r7 = r7 - r16; - case 0x2273c: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5772; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x22754; - pc=0x42000; - run_42000(); return; - case 0x22754: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x22760; - pc=0x1b000; - run_1b000(); return; - case 0x22760: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x22770; - return; - case 0x22770: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r16 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x22780; - return; - case 0x22780: - /* Next insn is delay slot */ - r31=0x22788; - pc=0x1ce00; - run_1ce00(); return; - case 0x22788: - r2 = r0 + 1; - case 0x2278c: - r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; - r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; - r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x227b0: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x227bc; - pc=0x15c00; - run_15c00(); return; - case 0x227bc: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x227c8; - pc=0x32200; - run_32200(); return; - case 0x227c8: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r3 = r4 & r3; - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x22c20; - run_22c00(); return; - } - r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r3 = r0 | 65535; - r4 = r6 | 65535; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x22c90; - run_22c00(); return; - } - case 0x22800: - pc=0x22800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_22800() throws ExecutionException { /* 0x22800 - 0x22a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x22800: - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r6 = r6 - r2; - r16 = r6 + -3; - r16 = r16 & 65535; - case 0x22814: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x22824; - return; - case 0x22824: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x22830; - pc=0x26000; - run_26000(); return; - case 0x22830: - /* Next insn is delay slot */ - r31=0x22838; - pc=0x1ce00; - run_1ce00(); return; - case 0x22838: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22844: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x22854; - return; - case 0x22854: - /* Next insn is delay slot */ - r31=0x2285c; - pc=0x1ce00; - run_1ce00(); return; - case 0x2285c: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22868: - /* Next insn is delay slot */ - r31=0x22870; - pc=0x20200; - run_20200(); return; - case 0x22870: - r4 = r29 + 16; - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x22880; - pc=0x21400; - run_21400(); return; - case 0x22880: - r3 = r0 + 16; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x22cbc; - run_22c00(); return; - } - r3 = r2 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x22c2c; - run_22c00(); return; - } - r3 = r0 + 24; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x22d40; - run_22c00(); return; - } - r3 = r0 + 32; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x22b40; - run_22a00(); return; - } - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2996; - case 0x228bc: - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x228d4; - pc=0x21000; - run_21000(); return; - case 0x228d4: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x228e0: - r19 = r29 + 16; - /* Next insn is delay slot */ - r31=0x228ec; - pc=0x20200; - run_20200(); return; - case 0x228ec: - r4 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x228fc; - pc=0x21400; - run_21400(); return; - case 0x228fc: - r3 = r0 + 3; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x22d54; - run_22c00(); return; - } - r3 = r2 < 4 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x22b7c; - run_22a00(); return; - } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x22d68; - run_22c00(); return; - } - r3 = r0 + 2; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x22b40; - run_22a00(); return; - } - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2764; - case 0x22934: - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x2294c; - pc=0x21000; - run_21000(); return; - case 0x2294c: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22958: - /* Next insn is delay slot */ - r31=0x22960; - pc=0x15e00; - run_15e00(); return; - case 0x22960: - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2296c; - pc=0x20000; - run_20000(); return; - case 0x2296c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x22bcc; - run_22a00(); return; - } - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x22984; - pc=0x1b000; - run_1b000(); return; - case 0x22984: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22990: - r19 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2299c; - pc=0x20200; - run_20200(); return; - case 0x2299c: - r4 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x229ac; - pc=0x21400; - run_21400(); return; - case 0x229ac: - r3 = (r2&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x22b40; - run_22a00(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -4496; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x229d8: - r3 = 7 << 16; - r4 = readPages[(r3+30664)>>>12][((r3+30664)>>>2)&0x3ff]; - r2 = 7 << 16; - r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -2432; - r17 = r17 + r2; - r4 = r4 & 2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x22e8c; - run_22e00(); return; - } - case 0x22a00: - pc=0x22a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_22a00() throws ExecutionException { /* 0x22a00 - 0x22c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x22a00: - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x22e8c; - run_22e00(); return; - } - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x22a38; - continue; - } - r16 = r16 & 256; - r3 = r3 + 30664; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x22eac; - run_22e00(); return; - } - r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - case 0x22a2c: - r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r3 = r0 + 2; - r20 = r3 - r20; - case 0x22a38: - r3 = r2 << 8; - r6 = r3 | r2; - case 0x22a40: - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x22a50; - pc=0x21000; - run_21000(); return; - case 0x22a50: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22a5c: - r2 = 7 << 16; - r2 = r2 + -2612; - case 0x22a64: - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r6 = tmp; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x22a7c; - pc=0x21000; - run_21000(); return; - case 0x22a7c: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22a88: - r2 = 7 << 16; - r2 = r2 + -2576; - /* Next insn is delay slot */ - pc=0x22a64; - continue; - case 0x22a98: - r2 = 7 << 16; - r2 = r2 + -2360; - /* Next insn is delay slot */ - pc=0x22a64; - continue; - case 0x22aa8: - r2 = 7 << 16; - r2 = r2 + -2540; - /* Next insn is delay slot */ - pc=0x22a64; - continue; - case 0x22ab8: - r2 = 7 << 16; - r2 = r2 + -2396; - /* Next insn is delay slot */ - pc=0x22a64; - continue; - case 0x22ac8: - r2 = 7 << 16; - r2 = r2 + -2468; - /* Next insn is delay slot */ - pc=0x22a64; - continue; - case 0x22ad8: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2324; - /* Next insn is delay slot */ - pc=0x22934; - run_22800(); return; - case 0x22aec: - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2256; - case 0x22af8: - r2 = r17 + r2; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x22b10; - pc=0x21000; - run_21000(); return; - case 0x22b10: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22b1c: - r2 = 7 << 16; - r2 = r2 + -2504; - /* Next insn is delay slot */ - pc=0x22a64; - continue; - case 0x22b2c: - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2120; - /* Next insn is delay slot */ - pc=0x22af8; - continue; - case 0x22b40: - r4 = 7 << 16; - r4 = r4 + -3048; - /* Next insn is delay slot */ - r31=0x22b50; - pc=0x1b000; - run_1b000(); return; - case 0x22b50: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22b5c: - r4 = 7 << 16; - r4 = r4 + -5732; - r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x22b70; - pc=0x1b800; - run_1b800(); return; - case 0x22b70: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22b7c: - r3 = r0 + 64; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x22d7c; - run_22c00(); return; - } - r3 = r0 + 128; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x22b40; - continue; - } - r2 = 7 << 16; - r2 = r2 + -2920; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x22b40; - continue; - } - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - r31=0x22bc0; - return; - case 0x22bc0: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22bcc: - /* Next insn is delay slot */ - r31=0x22bd4; - pc=0x15e00; - run_15e00(); return; - case 0x22bd4: - r18 = r2 + r0; - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x22be8; - return; - case 0x22be8: - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x22bf4; - pc=0x25e00; - run_25e00(); return; - case 0x22bf4: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x22c00; - pc=0x25e00; - run_25e00(); return; - case 0x22c00: - pc=0x22c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_22c00() throws ExecutionException { /* 0x22c00 - 0x22e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x22c00: - /* Next insn is delay slot */ - r31=0x22c08; - pc=0x1ce00; - run_1ce00(); return; - case 0x22c08: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22c14: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x22760; - run_22600(); return; - case 0x22c20: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x22814; - run_22800(); return; - case 0x22c2c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x22b40; - run_22a00(); return; - } - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2948; - r2 = r17 + r2; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x22c58; - pc=0x21000; - run_21000(); return; - case 0x22c58: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22c64: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5800; - /* Next insn is delay slot */ - r31=0x22c78; - pc=0x42000; - run_42000(); return; - case 0x22c78: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x22c84; - pc=0x1b000; - run_1b000(); return; - case 0x22c84: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x22760; - run_22600(); return; - case 0x22c90: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5800; - /* Next insn is delay slot */ - r31=0x22ca4; - pc=0x42000; - run_42000(); return; - case 0x22ca4: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x22cb0; - pc=0x1b000; - run_1b000(); return; - case 0x22cb0: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x22814; - run_22800(); return; - case 0x22cbc: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2964; - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x22ce0; - pc=0x21000; - run_21000(); return; - case 0x22ce0: - addr=r29+27; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r2 = r0 + 255; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x228d4; - run_22800(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x228d4; - run_22800(); return; - } - r2 = 7 << 16; - r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x228d4; - run_22800(); return; - } - r4 = 7 << 16; - r4 = r4 + -5840; - /* Next insn is delay slot */ - r31=0x22d34; - pc=0x1ac00; - run_1ac00(); return; - case 0x22d34: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22d40: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2980; - /* Next insn is delay slot */ - pc=0x228bc; - run_22800(); return; - case 0x22d54: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2840; - /* Next insn is delay slot */ - pc=0x22934; - run_22800(); return; - case 0x22d68: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2688; - /* Next insn is delay slot */ - pc=0x22934; - run_22800(); return; - case 0x22d7c: - r2 = 7 << 16; - r2 = r2 + -2880; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r17 = 7 << 16; - r3 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = r3 & 2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x22e80; - run_22e00(); return; - } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x22e80; - run_22e00(); return; - } - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x22de4; - continue; - } - r16 = r16 & 256; - r3 = r17 + 30664; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x22e98; - run_22e00(); return; - } - r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - case 0x22dd8: - r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r3 = r0 + 2; - r20 = r3 - r20; - case 0x22de4: - r16 = r2 << 8; - r16 = r16 | r2; - case 0x22dec: - r4 = r20 + r0; - r5 = r19 + r0; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x22e00; - pc=0x21000; - run_21000(); return; - case 0x22e00: - pc=0x22e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_22e00() throws ExecutionException { /* 0x22e00 - 0x23000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x22e00: - r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 & 4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x228d4; - run_22800(); return; - } - addr=r29+27; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x228d4; - run_22800(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x228d4; - run_22800(); return; - } - r2 = r0 + 139; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x22ec0; - continue; - } - r2 = r0 + 171; - if(r16 != r2) { - /* Next insn is delay slot */ - pc=0x228d4; - run_22800(); return; - } - r4 = 7 << 16; - r4 = r4 + -5888; - /* Next insn is delay slot */ - r31=0x22e68; - pc=0x1ac00; - run_1ac00(); return; - case 0x22e68: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x22e74: - r7 = r16 + -127; - /* Next insn is delay slot */ - pc=0x2273c; - run_22600(); return; - case 0x22e80: - r16 = r2 + r0; - /* Next insn is delay slot */ - pc=0x22dec; - run_22c00(); return; - case 0x22e8c: - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x22a40; - run_22a00(); return; - case 0x22e98: - r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x22dd8; - run_22c00(); return; - case 0x22eac: - r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x22a2c; - run_22a00(); return; - case 0x22ec0: - r4 = 7 << 16; - r4 = r4 + -5936; - /* Next insn is delay slot */ - r31=0x22ed0; - pc=0x1ac00; - run_1ac00(); return; - case 0x22ed0: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2278c; - run_22600(); return; - case 0x23000: - pc=0x23000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_23000() throws ExecutionException { /* 0x23000 - 0x23200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x23000: - r2 = r0 + 3; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x23018; - continue; - } - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x23018: - r4 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r29 = r29 + -136; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r20; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r19; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r18; - writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r17; - writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x23044; - pc=0x18000; - run_18000(); return; - case 0x23044: - r4 = readPages[(r28+-30696)>>>12][((r28+-30696)>>>2)&0x3ff]; - r6 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - r5 = r29 + 104; - /* Next insn is delay slot */ - r31=0x23058; - pc=0x31000; - run_31000(); return; - case 0x23058: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x230a0; - continue; - } - r16 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - r2 = r16 >> 10; - r3 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; - r17 = r16 & 255; - r18 = r16 & 768; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x23574; - run_23400(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -4236; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x230a0: - r4 = readPages[(r28+-30700)>>>12][((r28+-30700)>>>2)&0x3ff]; - r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x230b0; - pc=0x21a00; - run_21a00(); return; - case 0x230b0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x230e0; - continue; - } - case 0x230b8: - r2 = r0 + 1; - case 0x230bc: - r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; - r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; - r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x230e0: - r4 = readPages[(r28+-30692)>>>12][((r28+-30692)>>>2)&0x3ff]; - r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x230f0; - pc=0x21a00; - run_21a00(); return; - case 0x230f0: - r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x230bc; - continue; - case 0x230fc: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x23108; - pc=0x15c00; - run_15c00(); return; - case 0x23108: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x23114; - pc=0x32200; - run_32200(); return; - case 0x23114: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r3 = r4 & r3; - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2362c; - run_23600(); return; - } - r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r3 = r0 | 65535; - r4 = r6 | 65535; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x23698; - run_23600(); return; - } - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r6 = r6 - r2; - r16 = r6 + -3; - r16 = r16 & 65535; - case 0x23160: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x23170; - return; - case 0x23170: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x2317c; - pc=0x26000; - run_26000(); return; - case 0x2317c: - /* Next insn is delay slot */ - r31=0x23184; - pc=0x1ce00; - run_1ce00(); return; - case 0x23184: - /* Next insn is delay slot */ - pc=0x230b8; - continue; - case 0x2318c: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x23198; - pc=0x15c00; - run_15c00(); return; - case 0x23198: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x231a4; - pc=0x32200; - run_32200(); return; - case 0x231a4: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r3 = r4 & r3; - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x23620; - run_23600(); return; - } - r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r3 = r0 | 65535; - r4 = r6 | 65535; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x2366c; - run_23600(); return; - } - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r2 = r6 - r2; - r2 = r2 + -2; - r16 = r2 & 65535; - r2 = r2 & 32768; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x23204; - run_23200(); return; - } - r2 = 65535 << 16; - case 0x23200: - pc=0x23200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_23200() throws ExecutionException { /* 0x23200 - 0x23400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x23200: - r16 = r16 + r2; - case 0x23204: - r2 = r16 + 128; - r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2324c; - continue; - } - r2 = r16 < -128 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x23874; - run_23800(); return; - } - r7 = r0 + -128; - r7 = r7 - r16; - case 0x23228: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5772; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x23240; - pc=0x42000; - run_42000(); return; - case 0x23240: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2324c; - pc=0x1b000; - run_1b000(); return; - case 0x2324c: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x2325c; - return; - case 0x2325c: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r16 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x2326c; - return; - case 0x2326c: - /* Next insn is delay slot */ - r31=0x23274; - pc=0x1ce00; - run_1ce00(); return; - case 0x23274: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x2327c: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x2328c; - return; - case 0x2328c: - /* Next insn is delay slot */ - r31=0x23294; - pc=0x1ce00; - run_1ce00(); return; - case 0x23294: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x2329c: - /* Next insn is delay slot */ - r31=0x232a4; - pc=0x20200; - run_20200(); return; - case 0x232a4: - r4 = r29 + 16; - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x232b4; - pc=0x21400; - run_21400(); return; - case 0x232b4: - r3 = r0 + 16; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x236c4; - run_23600(); return; - } - r3 = r2 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x23638; - run_23600(); return; - } - r3 = r0 + 24; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x23744; - run_23600(); return; - } - r3 = r0 + 32; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x2355c; - run_23400(); return; - } - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2996; - case 0x232f0: - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x23308; - pc=0x21000; - run_21000(); return; - case 0x23308: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x23310: - r19 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2331c; - pc=0x20200; - run_20200(); return; - case 0x2331c: - r4 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2332c; - pc=0x21400; - run_21400(); return; - case 0x2332c: - r3 = r0 + 3; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x23758; - run_23600(); return; - } - r3 = r2 < 4 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x23590; - run_23400(); return; - } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2376c; - run_23600(); return; - } - r3 = r0 + 2; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x2355c; - run_23400(); return; - } - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2764; - case 0x23364: - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x2337c; - pc=0x21000; - run_21000(); return; - case 0x2337c: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x23384: - r19 = r29 + 16; - /* Next insn is delay slot */ - r31=0x23390; - pc=0x20200; - run_20200(); return; - case 0x23390: - r4 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x233a0; - pc=0x21400; - run_21400(); return; - case 0x233a0: - r3 = (r2&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2355c; - run_23400(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -4208; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x233cc: - /* Next insn is delay slot */ - r31=0x233d4; - pc=0x15e00; - run_15e00(); return; - case 0x233d4: - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x233e0; - pc=0x20000; - run_20000(); return; - case 0x233e0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x235dc; - run_23400(); return; - } - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x233f8; - pc=0x1b000; - run_1b000(); return; - case 0x233f8: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x23400: - pc=0x23400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_23400() throws ExecutionException { /* 0x23400 - 0x23600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x23400: - r3 = 7 << 16; - r4 = readPages[(r3+30664)>>>12][((r3+30664)>>>2)&0x3ff]; - r2 = 7 << 16; - r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -2432; - r17 = r17 + r2; - r4 = r4 & 2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x2388c; - run_23800(); return; - } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x2388c; - run_23800(); return; - } - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x23460; - continue; - } - r16 = r16 & 256; - r3 = r3 + 30664; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x238ac; - run_23800(); return; - } - r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - case 0x23454: - r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r3 = r0 + 2; - r20 = r3 - r20; - case 0x23460: - r3 = r2 << 8; - r6 = r3 | r2; - case 0x23468: - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x23478; - pc=0x21000; - run_21000(); return; - case 0x23478: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x23480: - r2 = 7 << 16; - r2 = r2 + -2360; - case 0x23488: - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r6 = tmp; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x234a0; - pc=0x21000; - run_21000(); return; - case 0x234a0: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x234a8: - r2 = 7 << 16; - r2 = r2 + -2396; - /* Next insn is delay slot */ - pc=0x23488; - continue; - case 0x234b8: - r2 = 7 << 16; - r2 = r2 + -2468; - /* Next insn is delay slot */ - pc=0x23488; - continue; - case 0x234c8: - r2 = 7 << 16; - r2 = r2 + -2612; - /* Next insn is delay slot */ - pc=0x23488; - continue; - case 0x234d8: - r2 = 7 << 16; - r2 = r2 + -2576; - /* Next insn is delay slot */ - pc=0x23488; - continue; - case 0x234e8: - r2 = 7 << 16; - r2 = r2 + -2540; - /* Next insn is delay slot */ - pc=0x23488; - continue; - case 0x234f8: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2324; - /* Next insn is delay slot */ - pc=0x23364; - run_23200(); return; - case 0x2350c: - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2256; - case 0x23518: - r2 = r17 + r2; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x23530; - pc=0x21000; - run_21000(); return; - case 0x23530: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x23538: - r2 = 7 << 16; - r2 = r2 + -2504; - /* Next insn is delay slot */ - pc=0x23488; - continue; - case 0x23548: - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2120; - /* Next insn is delay slot */ - pc=0x23518; - continue; - case 0x2355c: - r4 = 7 << 16; - r4 = r4 + -3048; - /* Next insn is delay slot */ - r31=0x2356c; - pc=0x1b000; - run_1b000(); return; - case 0x2356c: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x23574: - r4 = 7 << 16; - r4 = r4 + -5732; - r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x23588; - pc=0x1b800; - run_1b800(); return; - case 0x23588: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x23590: - r3 = r0 + 64; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x23780; - run_23600(); return; - } - r3 = r0 + 128; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x2355c; - continue; - } - r2 = 7 << 16; - r2 = r2 + -2920; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x2355c; - continue; - } - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - r31=0x235d4; - return; - case 0x235d4: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x235dc: - /* Next insn is delay slot */ - r31=0x235e4; - pc=0x15e00; - run_15e00(); return; - case 0x235e4: - r18 = r2 + r0; - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x235f8; - return; - case 0x235f8: - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x23604; - pc=0x25e00; - run_25e00(); return; - case 0x23600: - pc=0x23600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_23600() throws ExecutionException { /* 0x23600 - 0x23800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x23600: - case 0x23604: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x23610; - pc=0x25e00; - run_25e00(); return; - case 0x23610: - /* Next insn is delay slot */ - r31=0x23618; - pc=0x1ce00; - run_1ce00(); return; - case 0x23618: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x23620: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x2324c; - run_23200(); return; - case 0x2362c: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x23160; - run_23000(); return; - case 0x23638: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2355c; - run_23400(); return; - } - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2948; - r2 = r17 + r2; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x23664; - pc=0x21000; - run_21000(); return; - case 0x23664: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x2366c: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5800; - /* Next insn is delay slot */ - r31=0x23680; - pc=0x42000; - run_42000(); return; - case 0x23680: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2368c; - pc=0x1b000; - run_1b000(); return; - case 0x2368c: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x2324c; - run_23200(); return; - case 0x23698: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5800; - /* Next insn is delay slot */ - r31=0x236ac; - pc=0x42000; - run_42000(); return; - case 0x236ac: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x236b8; - pc=0x1b000; - run_1b000(); return; - case 0x236b8: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x23160; - run_23000(); return; - case 0x236c4: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2964; - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x236e8; - pc=0x21000; - run_21000(); return; - case 0x236e8: - addr=r29+27; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r2 = r0 + 255; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - } - r2 = 7 << 16; - r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - } - r4 = 7 << 16; - r4 = r4 + -5840; - /* Next insn is delay slot */ - r31=0x2373c; - pc=0x1ac00; - run_1ac00(); return; - case 0x2373c: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x23744: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2980; - /* Next insn is delay slot */ - pc=0x232f0; - run_23200(); return; - case 0x23758: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2840; - /* Next insn is delay slot */ - pc=0x23364; - run_23200(); return; - case 0x2376c: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2688; - /* Next insn is delay slot */ - pc=0x23364; - run_23200(); return; - case 0x23780: - r2 = 7 << 16; - r2 = r2 + -2880; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r17 = 7 << 16; - r3 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = r3 & 2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x23880; - run_23800(); return; - } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x23880; - run_23800(); return; - } - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x237e8; - continue; - } - r16 = r16 & 256; - r3 = r17 + 30664; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x23898; - run_23800(); return; - } - r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - case 0x237dc: - r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r3 = r0 + 2; - r20 = r3 - r20; - case 0x237e8: - r16 = r2 << 8; - r16 = r16 | r2; - case 0x237f0: - r4 = r20 + r0; - r5 = r19 + r0; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x23804; - pc=0x21000; - run_21000(); return; - case 0x23800: - pc=0x23800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_23800() throws ExecutionException { /* 0x23800 - 0x23a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x23800: - case 0x23804: - r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 & 4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - } - addr=r29+27; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - } - r2 = r0 + 139; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x238c0; - continue; - } - r2 = r0 + 171; - if(r16 != r2) { - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - } - r4 = 7 << 16; - r4 = r4 + -5888; - /* Next insn is delay slot */ - r31=0x2386c; - pc=0x1ac00; - run_1ac00(); return; - case 0x2386c: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x23874: - r7 = r16 + -127; - /* Next insn is delay slot */ - pc=0x23228; - run_23200(); return; - case 0x23880: - r16 = r2 + r0; - /* Next insn is delay slot */ - pc=0x237f0; - run_23600(); return; - case 0x2388c: - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x23468; - run_23400(); return; - case 0x23898: - r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x237dc; - run_23600(); return; - case 0x238ac: - r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x23454; - run_23400(); return; - case 0x238c0: - r4 = 7 << 16; - r4 = r4 + -5936; - /* Next insn is delay slot */ - r31=0x238d0; - pc=0x1ac00; - run_1ac00(); return; - case 0x238d0: - /* Next insn is delay slot */ - pc=0x230b8; - run_23000(); return; - case 0x23a00: - pc=0x23a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_23a00() throws ExecutionException { /* 0x23a00 - 0x23c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x23a00: - r2 = r0 + 3; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x23a18; - continue; - } - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x23a18: - r4 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r29 = r29 + -136; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r20; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r19; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r18; - writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r17; - writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x23a44; - pc=0x18000; - run_18000(); return; - case 0x23a44: - r4 = readPages[(r28+-30704)>>>12][((r28+-30704)>>>2)&0x3ff]; - r6 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - r5 = r29 + 104; - /* Next insn is delay slot */ - r31=0x23a58; - pc=0x31000; - run_31000(); return; - case 0x23a58: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x23aa0; - continue; - } - r16 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - r2 = r16 >> 10; - r3 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; - r17 = r16 & 255; - r18 = r16 & 768; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x23f74; - run_23e00(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -3948; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x23aa0: - r4 = readPages[(r28+-30696)>>>12][((r28+-30696)>>>2)&0x3ff]; - r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x23ab0; - pc=0x21a00; - run_21a00(); return; - case 0x23ab0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x23ae0; - continue; - } - case 0x23ab8: - r2 = r0 + 1; - case 0x23abc: - r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; - r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; - r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x23ae0: - r4 = readPages[(r28+-30692)>>>12][((r28+-30692)>>>2)&0x3ff]; - r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x23af0; - pc=0x21a00; - run_21a00(); return; - case 0x23af0: - r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x23abc; - continue; - case 0x23afc: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x23b08; - pc=0x15c00; - run_15c00(); return; - case 0x23b08: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x23b14; - pc=0x32200; - run_32200(); return; - case 0x23b14: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r3 = r4 & r3; - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2402c; - run_24000(); return; - } - r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r3 = r0 | 65535; - r4 = r6 | 65535; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x24098; - run_24000(); return; - } - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r6 = r6 - r2; - r16 = r6 + -3; - r16 = r16 & 65535; - case 0x23b60: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x23b70; - return; - case 0x23b70: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x23b7c; - pc=0x26000; - run_26000(); return; - case 0x23b7c: - /* Next insn is delay slot */ - r31=0x23b84; - pc=0x1ce00; - run_1ce00(); return; - case 0x23b84: - /* Next insn is delay slot */ - pc=0x23ab8; - continue; - case 0x23b8c: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x23b98; - pc=0x15c00; - run_15c00(); return; - case 0x23b98: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x23ba4; - pc=0x32200; - run_32200(); return; - case 0x23ba4: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r3 = r4 & r3; - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x24020; - run_24000(); return; - } - r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r3 = r0 | 65535; - r4 = r6 | 65535; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x2406c; - run_24000(); return; - } - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r2 = r6 - r2; - r2 = r2 + -2; - r16 = r2 & 65535; - r2 = r2 & 32768; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x23c04; - run_23c00(); return; - } - r2 = 65535 << 16; - case 0x23c00: - pc=0x23c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_23c00() throws ExecutionException { /* 0x23c00 - 0x23e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x23c00: - r16 = r16 + r2; - case 0x23c04: - r2 = r16 + 128; - r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x23c4c; - continue; - } - r2 = r16 < -128 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24274; - run_24200(); return; - } - r7 = r0 + -128; - r7 = r7 - r16; - case 0x23c28: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5772; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x23c40; - pc=0x42000; - run_42000(); return; - case 0x23c40: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x23c4c; - pc=0x1b000; - run_1b000(); return; - case 0x23c4c: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x23c5c; - return; - case 0x23c5c: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r16 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x23c6c; - return; - case 0x23c6c: - /* Next insn is delay slot */ - r31=0x23c74; - pc=0x1ce00; - run_1ce00(); return; - case 0x23c74: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x23c7c: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x23c8c; - return; - case 0x23c8c: - /* Next insn is delay slot */ - r31=0x23c94; - pc=0x1ce00; - run_1ce00(); return; - case 0x23c94: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x23c9c: - /* Next insn is delay slot */ - r31=0x23ca4; - pc=0x20200; - run_20200(); return; - case 0x23ca4: - r4 = r29 + 16; - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x23cb4; - pc=0x21400; - run_21400(); return; - case 0x23cb4: - r3 = r0 + 16; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x240c4; - run_24000(); return; - } - r3 = r2 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x24038; - run_24000(); return; - } - r3 = r0 + 24; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x24144; - run_24000(); return; - } - r3 = r0 + 32; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x23f5c; - run_23e00(); return; - } - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2996; - case 0x23cf0: - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x23d08; - pc=0x21000; - run_21000(); return; - case 0x23d08: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x23d10: - r19 = r29 + 16; - /* Next insn is delay slot */ - r31=0x23d1c; - pc=0x20200; - run_20200(); return; - case 0x23d1c: - r4 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x23d2c; - pc=0x21400; - run_21400(); return; - case 0x23d2c: - r3 = r0 + 3; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x24158; - run_24000(); return; - } - r3 = r2 < 4 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x23f90; - run_23e00(); return; - } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2416c; - run_24000(); return; - } - r3 = r0 + 2; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x23f5c; - run_23e00(); return; - } - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2764; - case 0x23d64: - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x23d7c; - pc=0x21000; - run_21000(); return; - case 0x23d7c: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x23d84: - r19 = r29 + 16; - /* Next insn is delay slot */ - r31=0x23d90; - pc=0x20200; - run_20200(); return; - case 0x23d90: - r4 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x23da0; - pc=0x21400; - run_21400(); return; - case 0x23da0: - r3 = (r2&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x23f5c; - run_23e00(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -3920; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x23dcc: - /* Next insn is delay slot */ - r31=0x23dd4; - pc=0x15e00; - run_15e00(); return; - case 0x23dd4: - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x23de0; - pc=0x20000; - run_20000(); return; - case 0x23de0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x23fdc; - run_23e00(); return; - } - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x23df8; - pc=0x1b000; - run_1b000(); return; - case 0x23df8: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x23e00: - pc=0x23e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_23e00() throws ExecutionException { /* 0x23e00 - 0x24000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x23e00: - r3 = 7 << 16; - r4 = readPages[(r3+30664)>>>12][((r3+30664)>>>2)&0x3ff]; - r2 = 7 << 16; - r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -2432; - r17 = r17 + r2; - r4 = r4 & 2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x2428c; - run_24200(); return; - } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x2428c; - run_24200(); return; - } - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x23e60; - continue; - } - r16 = r16 & 256; - r3 = r3 + 30664; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x242ac; - run_24200(); return; - } - r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - case 0x23e54: - r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r3 = r0 + 2; - r20 = r3 - r20; - case 0x23e60: - r3 = r2 << 8; - r6 = r3 | r2; - case 0x23e68: - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x23e78; - pc=0x21000; - run_21000(); return; - case 0x23e78: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x23e80: - r2 = 7 << 16; - r2 = r2 + -2360; - case 0x23e88: - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r6 = tmp; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x23ea0; - pc=0x21000; - run_21000(); return; - case 0x23ea0: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x23ea8: - r2 = 7 << 16; - r2 = r2 + -2396; - /* Next insn is delay slot */ - pc=0x23e88; - continue; - case 0x23eb8: - r2 = 7 << 16; - r2 = r2 + -2468; - /* Next insn is delay slot */ - pc=0x23e88; - continue; - case 0x23ec8: - r2 = 7 << 16; - r2 = r2 + -2612; - /* Next insn is delay slot */ - pc=0x23e88; - continue; - case 0x23ed8: - r2 = 7 << 16; - r2 = r2 + -2576; - /* Next insn is delay slot */ - pc=0x23e88; - continue; - case 0x23ee8: - r2 = 7 << 16; - r2 = r2 + -2540; - /* Next insn is delay slot */ - pc=0x23e88; - continue; - case 0x23ef8: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2324; - /* Next insn is delay slot */ - pc=0x23d64; - run_23c00(); return; - case 0x23f0c: - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2256; - case 0x23f18: - r2 = r17 + r2; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x23f30; - pc=0x21000; - run_21000(); return; - case 0x23f30: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x23f38: - r2 = 7 << 16; - r2 = r2 + -2504; - /* Next insn is delay slot */ - pc=0x23e88; - continue; - case 0x23f48: - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2120; - /* Next insn is delay slot */ - pc=0x23f18; - continue; - case 0x23f5c: - r4 = 7 << 16; - r4 = r4 + -3048; - /* Next insn is delay slot */ - r31=0x23f6c; - pc=0x1b000; - run_1b000(); return; - case 0x23f6c: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x23f74: - r4 = 7 << 16; - r4 = r4 + -5732; - r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x23f88; - pc=0x1b800; - run_1b800(); return; - case 0x23f88: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x23f90: - r3 = r0 + 64; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x24180; - run_24000(); return; - } - r3 = r0 + 128; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x23f5c; - continue; - } - r2 = 7 << 16; - r2 = r2 + -2920; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x23f5c; - continue; - } - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - r31=0x23fd4; - return; - case 0x23fd4: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x23fdc: - /* Next insn is delay slot */ - r31=0x23fe4; - pc=0x15e00; - run_15e00(); return; - case 0x23fe4: - r18 = r2 + r0; - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x23ff8; - return; - case 0x23ff8: - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x24004; - pc=0x25e00; - run_25e00(); return; - case 0x24000: - pc=0x24000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_24000() throws ExecutionException { /* 0x24000 - 0x24200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x24000: - case 0x24004: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x24010; - pc=0x25e00; - run_25e00(); return; - case 0x24010: - /* Next insn is delay slot */ - r31=0x24018; - pc=0x1ce00; - run_1ce00(); return; - case 0x24018: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x24020: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x23c4c; - run_23c00(); return; - case 0x2402c: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x23b60; - run_23a00(); return; - case 0x24038: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x23f5c; - run_23e00(); return; - } - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2948; - r2 = r17 + r2; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x24064; - pc=0x21000; - run_21000(); return; - case 0x24064: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x2406c: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5800; - /* Next insn is delay slot */ - r31=0x24080; - pc=0x42000; - run_42000(); return; - case 0x24080: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2408c; - pc=0x1b000; - run_1b000(); return; - case 0x2408c: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x23c4c; - run_23c00(); return; - case 0x24098: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5800; - /* Next insn is delay slot */ - r31=0x240ac; - pc=0x42000; - run_42000(); return; - case 0x240ac: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x240b8; - pc=0x1b000; - run_1b000(); return; - case 0x240b8: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x23b60; - run_23a00(); return; - case 0x240c4: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2964; - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x240e8; - pc=0x21000; - run_21000(); return; - case 0x240e8: - addr=r29+27; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r2 = r0 + 255; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - } - r2 = 7 << 16; - r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - } - r4 = 7 << 16; - r4 = r4 + -5840; - /* Next insn is delay slot */ - r31=0x2413c; - pc=0x1ac00; - run_1ac00(); return; - case 0x2413c: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x24144: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2980; - /* Next insn is delay slot */ - pc=0x23cf0; - run_23c00(); return; - case 0x24158: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2840; - /* Next insn is delay slot */ - pc=0x23d64; - run_23c00(); return; - case 0x2416c: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2688; - /* Next insn is delay slot */ - pc=0x23d64; - run_23c00(); return; - case 0x24180: - r2 = 7 << 16; - r2 = r2 + -2880; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r17 = 7 << 16; - r3 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = r3 & 2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x24280; - run_24200(); return; - } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x24280; - run_24200(); return; - } - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x241e8; - continue; - } - r16 = r16 & 256; - r3 = r17 + 30664; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x24298; - run_24200(); return; - } - r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - case 0x241dc: - r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r3 = r0 + 2; - r20 = r3 - r20; - case 0x241e8: - r16 = r2 << 8; - r16 = r16 | r2; - case 0x241f0: - r4 = r20 + r0; - r5 = r19 + r0; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x24204; - pc=0x21000; - run_21000(); return; - case 0x24200: - pc=0x24200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_24200() throws ExecutionException { /* 0x24200 - 0x24400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x24200: - case 0x24204: - r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 & 4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - } - addr=r29+27; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - } - r2 = r0 + 139; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x242c0; - continue; - } - r2 = r0 + 171; - if(r16 != r2) { - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - } - r4 = 7 << 16; - r4 = r4 + -5888; - /* Next insn is delay slot */ - r31=0x2426c; - pc=0x1ac00; - run_1ac00(); return; - case 0x2426c: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x24274: - r7 = r16 + -127; - /* Next insn is delay slot */ - pc=0x23c28; - run_23c00(); return; - case 0x24280: - r16 = r2 + r0; - /* Next insn is delay slot */ - pc=0x241f0; - run_24000(); return; - case 0x2428c: - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x23e68; - run_23e00(); return; - case 0x24298: - r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x241dc; - run_24000(); return; - case 0x242ac: - r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x23e54; - run_23e00(); return; - case 0x242c0: - r4 = 7 << 16; - r4 = r4 + -5936; - /* Next insn is delay slot */ - r31=0x242d0; - pc=0x1ac00; - run_1ac00(); return; - case 0x242d0: - /* Next insn is delay slot */ - pc=0x23ab8; - run_23a00(); return; - case 0x24400: - pc=0x24400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_24400() throws ExecutionException { /* 0x24400 - 0x24600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x24400: - r2 = r0 + 3; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x24418; - continue; - } - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x24418: - r4 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r29 = r29 + -136; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r20; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r19; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r18; - writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r17; - writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x24444; - pc=0x18000; - run_18000(); return; - case 0x24444: - r4 = readPages[(r28+-30708)>>>12][((r28+-30708)>>>2)&0x3ff]; - r6 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - r5 = r29 + 104; - /* Next insn is delay slot */ - r31=0x24458; - pc=0x31000; - run_31000(); return; - case 0x24458: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x244a0; - continue; - } - r16 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - r2 = r16 >> 10; - r3 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; - r17 = r16 & 255; - r18 = r16 & 768; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x24994; - run_24800(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -3660; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x244a0: - r4 = readPages[(r28+-30692)>>>12][((r28+-30692)>>>2)&0x3ff]; - r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x244b0; - pc=0x21a00; - run_21a00(); return; - case 0x244b0: - r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; - r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; - r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x244d8: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x244e4; - pc=0x15c00; - run_15c00(); return; - case 0x244e4: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x244f0; - pc=0x32200; - run_32200(); return; - case 0x244f0: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r3 = r4 & r3; - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x24a58; - run_24a00(); return; - } - r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r3 = r0 | 65535; - r4 = r6 | 65535; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x24ac8; - run_24a00(); return; - } - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r6 = r6 - r2; - r16 = r6 + -3; - r16 = r16 & 65535; - case 0x2453c: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x2454c; - return; - case 0x2454c: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x24558; - pc=0x26000; - run_26000(); return; - case 0x24558: - /* Next insn is delay slot */ - r31=0x24560; - pc=0x1ce00; - run_1ce00(); return; - case 0x24560: - r2 = r0 + 1; - case 0x24564: - r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; - r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; - r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x24588: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x24594; - pc=0x15c00; - run_15c00(); return; - case 0x24594: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x245a0; - pc=0x32200; - run_32200(); return; - case 0x245a0: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r3 = r4 & r3; - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x24a4c; - run_24a00(); return; - } - r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r3 = r0 | 65535; - r4 = r6 | 65535; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x24a9c; - run_24a00(); return; - } - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r2 = r6 - r2; - r2 = r2 + -2; - r16 = r2 & 65535; - r2 = r2 & 32768; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24600; - run_24600(); return; - } - r2 = 65535 << 16; - r16 = r16 + r2; - case 0x24600: - pc=0x24600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_24600() throws ExecutionException { /* 0x24600 - 0x24800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x24600: - r2 = r16 + 128; - r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x24648; - continue; - } - r2 = r16 < -128 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24cac; - run_24c00(); return; - } - r7 = r0 + -128; - r7 = r7 - r16; - case 0x24624: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5772; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x2463c; - pc=0x42000; - run_42000(); return; - case 0x2463c: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x24648; - pc=0x1b000; - run_1b000(); return; - case 0x24648: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x24658; - return; - case 0x24658: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r16 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x24668; - return; - case 0x24668: - /* Next insn is delay slot */ - r31=0x24670; - pc=0x1ce00; - run_1ce00(); return; - case 0x24670: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x2467c: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x2468c; - return; - case 0x2468c: - /* Next insn is delay slot */ - r31=0x24694; - pc=0x1ce00; - run_1ce00(); return; - case 0x24694: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x246a0: - /* Next insn is delay slot */ - r31=0x246a8; - pc=0x20200; - run_20200(); return; - case 0x246a8: - r4 = r29 + 16; - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x246b8; - pc=0x21400; - run_21400(); return; - case 0x246b8: - r3 = r0 + 16; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x24af4; - run_24a00(); return; - } - r3 = r2 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x24a64; - run_24a00(); return; - } - r3 = r0 + 24; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x24b78; - run_24a00(); return; - } - r3 = r0 + 32; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x24978; - run_24800(); return; - } - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2996; - case 0x246f4: - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2470c; - pc=0x21000; - run_21000(); return; - case 0x2470c: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x24718: - r19 = r29 + 16; - /* Next insn is delay slot */ - r31=0x24724; - pc=0x20200; - run_20200(); return; - case 0x24724: - r4 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x24734; - pc=0x21400; - run_21400(); return; - case 0x24734: - r3 = r0 + 3; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x24b8c; - run_24a00(); return; - } - r3 = r2 < 4 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x249b4; - run_24800(); return; - } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24ba0; - run_24a00(); return; - } - r3 = r0 + 2; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x24978; - run_24800(); return; - } - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2764; - case 0x2476c: - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x24784; - pc=0x21000; - run_21000(); return; - case 0x24784: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x24790: - r19 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2479c; - pc=0x20200; - run_20200(); return; - case 0x2479c: - r4 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x247ac; - pc=0x21400; - run_21400(); return; - case 0x247ac: - r3 = (r2&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x24978; - run_24800(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -3632; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x247d8: - /* Next insn is delay slot */ - r31=0x247e0; - pc=0x15e00; - run_15e00(); return; - case 0x247e0: - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x247ec; - pc=0x20000; - run_20000(); return; - case 0x247ec: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x24a04; - run_24a00(); return; - } - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x24804; - pc=0x1b000; - run_1b000(); return; - case 0x24800: - pc=0x24800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_24800() throws ExecutionException { /* 0x24800 - 0x24a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x24800: - case 0x24804: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x24810: - r3 = 7 << 16; - r4 = readPages[(r3+30664)>>>12][((r3+30664)>>>2)&0x3ff]; - r2 = 7 << 16; - r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -2432; - r17 = r17 + r2; - r4 = r4 & 2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x24cc4; - run_24c00(); return; - } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x24cc4; - run_24c00(); return; - } - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x24870; - continue; - } - r16 = r16 & 256; - r3 = r3 + 30664; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x24ce4; - run_24c00(); return; - } - r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - case 0x24864: - r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r3 = r0 + 2; - r20 = r3 - r20; - case 0x24870: - r3 = r2 << 8; - r6 = r3 | r2; - case 0x24878: - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x24888; - pc=0x21000; - run_21000(); return; - case 0x24888: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x24894: - r2 = 7 << 16; - r2 = r2 + -2360; - case 0x2489c: - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r6 = tmp; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x248b4; - pc=0x21000; - run_21000(); return; - case 0x248b4: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x248c0: - r2 = 7 << 16; - r2 = r2 + -2396; - /* Next insn is delay slot */ - pc=0x2489c; - continue; - case 0x248d0: - r2 = 7 << 16; - r2 = r2 + -2468; - /* Next insn is delay slot */ - pc=0x2489c; - continue; - case 0x248e0: - r2 = 7 << 16; - r2 = r2 + -2612; - /* Next insn is delay slot */ - pc=0x2489c; - continue; - case 0x248f0: - r2 = 7 << 16; - r2 = r2 + -2576; - /* Next insn is delay slot */ - pc=0x2489c; - continue; - case 0x24900: - r2 = 7 << 16; - r2 = r2 + -2540; - /* Next insn is delay slot */ - pc=0x2489c; - continue; - case 0x24910: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2324; - /* Next insn is delay slot */ - pc=0x2476c; - run_24600(); return; - case 0x24924: - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2256; - case 0x24930: - r2 = r17 + r2; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x24948; - pc=0x21000; - run_21000(); return; - case 0x24948: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x24954: - r2 = 7 << 16; - r2 = r2 + -2504; - /* Next insn is delay slot */ - pc=0x2489c; - continue; - case 0x24964: - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2120; - /* Next insn is delay slot */ - pc=0x24930; - continue; - case 0x24978: - r4 = 7 << 16; - r4 = r4 + -3048; - /* Next insn is delay slot */ - r31=0x24988; - pc=0x1b000; - run_1b000(); return; - case 0x24988: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x24994: - r4 = 7 << 16; - r4 = r4 + -5732; - r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x249a8; - pc=0x1b800; - run_1b800(); return; - case 0x249a8: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x249b4: - r3 = r0 + 64; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x24bb4; - run_24a00(); return; - } - r3 = r0 + 128; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x24978; - continue; - } - r2 = 7 << 16; - r2 = r2 + -2920; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x24978; - continue; - } - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - r31=0x249f8; - return; - case 0x249f8: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x24a00: - pc=0x24a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_24a00() throws ExecutionException { /* 0x24a00 - 0x24c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x24a00: - case 0x24a04: - /* Next insn is delay slot */ - r31=0x24a0c; - pc=0x15e00; - run_15e00(); return; - case 0x24a0c: - r18 = r2 + r0; - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x24a20; - return; - case 0x24a20: - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x24a2c; - pc=0x25e00; - run_25e00(); return; - case 0x24a2c: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x24a38; - pc=0x25e00; - run_25e00(); return; - case 0x24a38: - /* Next insn is delay slot */ - r31=0x24a40; - pc=0x1ce00; - run_1ce00(); return; - case 0x24a40: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x24a4c: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x24648; - run_24600(); return; - case 0x24a58: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x2453c; - run_24400(); return; - case 0x24a64: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x24978; - run_24800(); return; - } - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2948; - r2 = r17 + r2; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x24a90; - pc=0x21000; - run_21000(); return; - case 0x24a90: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x24a9c: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5800; - /* Next insn is delay slot */ - r31=0x24ab0; - pc=0x42000; - run_42000(); return; - case 0x24ab0: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x24abc; - pc=0x1b000; - run_1b000(); return; - case 0x24abc: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x24648; - run_24600(); return; - case 0x24ac8: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5800; - /* Next insn is delay slot */ - r31=0x24adc; - pc=0x42000; - run_42000(); return; - case 0x24adc: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x24ae8; - pc=0x1b000; - run_1b000(); return; - case 0x24ae8: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x2453c; - run_24400(); return; - case 0x24af4: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2964; - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x24b18; - pc=0x21000; - run_21000(); return; - case 0x24b18: - addr=r29+27; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r2 = r0 + 255; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x24560; - run_24400(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24560; - run_24400(); return; - } - r2 = 7 << 16; - r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24560; - run_24400(); return; - } - r4 = 7 << 16; - r4 = r4 + -5840; - /* Next insn is delay slot */ - r31=0x24b6c; - pc=0x1ac00; - run_1ac00(); return; - case 0x24b6c: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x24b78: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2980; - /* Next insn is delay slot */ - pc=0x246f4; - run_24600(); return; - case 0x24b8c: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2840; - /* Next insn is delay slot */ - pc=0x2476c; - run_24600(); return; - case 0x24ba0: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2688; - /* Next insn is delay slot */ - pc=0x2476c; - run_24600(); return; - case 0x24bb4: - r2 = 7 << 16; - r2 = r2 + -2880; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r17 = 7 << 16; - r3 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = r3 & 2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x24cb8; - run_24c00(); return; - } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x24cb8; - run_24c00(); return; - } - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x24c1c; - run_24c00(); return; - } - r16 = r16 & 256; - r3 = r17 + 30664; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x24cd0; - run_24c00(); return; - } - case 0x24c00: - pc=0x24c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_24c00() throws ExecutionException { /* 0x24c00 - 0x24e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x24c00: - r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - case 0x24c10: - r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r3 = r0 + 2; - r20 = r3 - r20; - case 0x24c1c: - r16 = r2 << 8; - r16 = r16 | r2; - case 0x24c24: - r4 = r20 + r0; - r5 = r19 + r0; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x24c38; - pc=0x21000; - run_21000(); return; - case 0x24c38: - r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 & 4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24560; - run_24400(); return; - } - addr=r29+27; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24560; - run_24400(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24560; - run_24400(); return; - } - r2 = r0 + 139; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x24cf8; - continue; - } - r2 = r0 + 171; - if(r16 != r2) { - /* Next insn is delay slot */ - pc=0x24560; - run_24400(); return; - } - r4 = 7 << 16; - r4 = r4 + -5888; - /* Next insn is delay slot */ - r31=0x24ca0; - pc=0x1ac00; - run_1ac00(); return; - case 0x24ca0: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x24cac: - r7 = r16 + -127; - /* Next insn is delay slot */ - pc=0x24624; - run_24600(); return; - case 0x24cb8: - r16 = r2 + r0; - /* Next insn is delay slot */ - pc=0x24c24; - continue; - case 0x24cc4: - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x24878; - run_24800(); return; - case 0x24cd0: - r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x24c10; - continue; - case 0x24ce4: - r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x24864; - run_24800(); return; - case 0x24cf8: - r4 = 7 << 16; - r4 = r4 + -5936; - /* Next insn is delay slot */ - r31=0x24d08; - pc=0x1ac00; - run_1ac00(); return; - case 0x24d08: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x24564; - run_24400(); return; - case 0x24e00: - pc=0x24e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_24e00() throws ExecutionException { /* 0x24e00 - 0x25000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x24e00: - r2 = r0 + 3; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x24e18; - continue; - } - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x24e18: - r4 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - r5 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r29 = r29 + -136; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r20; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r19; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r18; - writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r17; - writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x24e44; - pc=0x18000; - run_18000(); return; - case 0x24e44: - r4 = readPages[(r28+-30716)>>>12][((r28+-30716)>>>2)&0x3ff]; - r6 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - r5 = r29 + 104; - /* Next insn is delay slot */ - r31=0x24e58; - pc=0x31000; - run_31000(); return; - case 0x24e58: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24ea0; - continue; - } - r16 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - r2 = r16 >> 10; - r3 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; - r17 = r16 & 255; - r18 = r16 & 768; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2538c; - run_25200(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -3372; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x24ea0: - r4 = readPages[(r28+-30708)>>>12][((r28+-30708)>>>2)&0x3ff]; - r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x24eb0; - pc=0x21a00; - run_21a00(); return; - case 0x24eb0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24ee0; - continue; - } - case 0x24eb8: - r2 = r0 + 1; - case 0x24ebc: - r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r20 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r19 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r18 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - r17 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; - r16 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; - r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x24ee0: - r4 = readPages[(r28+-30692)>>>12][((r28+-30692)>>>2)&0x3ff]; - r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x24ef0; - pc=0x21a00; - run_21a00(); return; - case 0x24ef0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x24eb8; - continue; - } - r4 = readPages[(r28+-30712)>>>12][((r28+-30712)>>>2)&0x3ff]; - r5 = readPages[(r28+-30688)>>>12][((r28+-30688)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x24f08; - pc=0x21a00; - run_21a00(); return; - case 0x24f08: - r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x24ebc; - continue; - case 0x24f14: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x24f20; - pc=0x15c00; - run_15c00(); return; - case 0x24f20: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x24f2c; - pc=0x32200; - run_32200(); return; - case 0x24f2c: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r3 = r4 & r3; - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x25444; - run_25400(); return; - } - r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r3 = r0 | 65535; - r4 = r6 | 65535; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x254b0; - run_25400(); return; - } - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r6 = r6 - r2; - r16 = r6 + -3; - r16 = r16 & 65535; - case 0x24f78: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x24f88; - return; - case 0x24f88: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x24f94; - pc=0x26000; - run_26000(); return; - case 0x24f94: - /* Next insn is delay slot */ - r31=0x24f9c; - pc=0x1ce00; - run_1ce00(); return; - case 0x24f9c: - /* Next insn is delay slot */ - pc=0x24eb8; - continue; - case 0x24fa4: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x24fb0; - pc=0x15c00; - run_15c00(); return; - case 0x24fb0: - r4 = r29 + 80; - /* Next insn is delay slot */ - r31=0x24fbc; - pc=0x32200; - run_32200(); return; - case 0x24fbc: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r3 = r4 & r3; - r3 = r3 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x25438; - run_25400(); return; - } - r6 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r3 = r0 | 65535; - r4 = r6 | 65535; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x25484; - run_25400(); return; - } - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r2 = r6 - r2; - case 0x25000: - pc=0x25000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_25000() throws ExecutionException { /* 0x25000 - 0x25200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x25000: - r2 = r2 + -2; - r16 = r2 & 65535; - r2 = r2 & 32768; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2501c; - continue; - } - r2 = 65535 << 16; - r16 = r16 + r2; - case 0x2501c: - r2 = r16 + 128; - r2 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x25064; - continue; - } - r2 = r16 < -128 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2568c; - run_25600(); return; - } - r7 = r0 + -128; - r7 = r7 - r16; - case 0x25040: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5772; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x25058; - pc=0x42000; - run_42000(); return; - case 0x25058: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x25064; - pc=0x1b000; - run_1b000(); return; - case 0x25064: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x25074; - return; - case 0x25074: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r16 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x25084; - return; - case 0x25084: - /* Next insn is delay slot */ - r31=0x2508c; - pc=0x1ce00; - run_1ce00(); return; - case 0x2508c: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x25094: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x250a4; - return; - case 0x250a4: - /* Next insn is delay slot */ - r31=0x250ac; - pc=0x1ce00; - run_1ce00(); return; - case 0x250ac: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x250b4: - /* Next insn is delay slot */ - r31=0x250bc; - pc=0x20200; - run_20200(); return; - case 0x250bc: - r4 = r29 + 16; - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x250cc; - pc=0x21400; - run_21400(); return; - case 0x250cc: - r3 = r0 + 16; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x254dc; - run_25400(); return; - } - r3 = r2 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x25450; - run_25400(); return; - } - r3 = r0 + 24; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2555c; - run_25400(); return; - } - r3 = r0 + 32; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x25374; - run_25200(); return; - } - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2996; - case 0x25108: - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x25120; - pc=0x21000; - run_21000(); return; - case 0x25120: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x25128: - r19 = r29 + 16; - /* Next insn is delay slot */ - r31=0x25134; - pc=0x20200; - run_20200(); return; - case 0x25134: - r4 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x25144; - pc=0x21400; - run_21400(); return; - case 0x25144: - r3 = r0 + 3; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x25570; - run_25400(); return; - } - r3 = r2 < 4 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x253a8; - run_25200(); return; - } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x25584; - run_25400(); return; - } - r3 = r0 + 2; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x25374; - run_25200(); return; - } - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2764; - case 0x2517c: - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x25194; - pc=0x21000; - run_21000(); return; - case 0x25194: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x2519c: - r19 = r29 + 16; - /* Next insn is delay slot */ - r31=0x251a8; - pc=0x20200; - run_20200(); return; - case 0x251a8: - r4 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x251b8; - pc=0x21400; - run_21400(); return; - case 0x251b8: - r3 = (r2&0xffffffffL) < (65&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x25374; - run_25200(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + -3344; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x251e4: - /* Next insn is delay slot */ - r31=0x251ec; - pc=0x15e00; - run_15e00(); return; - case 0x251ec: - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x251f8; - pc=0x20000; - run_20000(); return; - case 0x251f8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x253f4; - run_25200(); return; - } - case 0x25200: - pc=0x25200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_25200() throws ExecutionException { /* 0x25200 - 0x25400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x25200: - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x25210; - pc=0x1b000; - run_1b000(); return; - case 0x25210: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x25218: - r3 = 7 << 16; - r4 = readPages[(r3+30664)>>>12][((r3+30664)>>>2)&0x3ff]; - r2 = 7 << 16; - r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r2 = r2 + -2432; - r17 = r17 + r2; - r4 = r4 & 2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x256a4; - run_25600(); return; - } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x256a4; - run_25600(); return; - } - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x25278; - continue; - } - r16 = r16 & 256; - r3 = r3 + 30664; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x256c4; - run_25600(); return; - } - r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - case 0x2526c: - r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r3 = r0 + 2; - r20 = r3 - r20; - case 0x25278: - r3 = r2 << 8; - r6 = r3 | r2; - case 0x25280: - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x25290; - pc=0x21000; - run_21000(); return; - case 0x25290: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x25298: - r2 = 7 << 16; - r2 = r2 + -2360; - case 0x252a0: - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r6 = tmp; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x252b8; - pc=0x21000; - run_21000(); return; - case 0x252b8: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x252c0: - r2 = 7 << 16; - r2 = r2 + -2396; - /* Next insn is delay slot */ - pc=0x252a0; - continue; - case 0x252d0: - r2 = 7 << 16; - r2 = r2 + -2468; - /* Next insn is delay slot */ - pc=0x252a0; - continue; - case 0x252e0: - r2 = 7 << 16; - r2 = r2 + -2612; - /* Next insn is delay slot */ - pc=0x252a0; - continue; - case 0x252f0: - r2 = 7 << 16; - r2 = r2 + -2576; - /* Next insn is delay slot */ - pc=0x252a0; - continue; - case 0x25300: - r2 = 7 << 16; - r2 = r2 + -2540; - /* Next insn is delay slot */ - pc=0x252a0; - continue; - case 0x25310: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2324; - /* Next insn is delay slot */ - pc=0x2517c; - run_25000(); return; - case 0x25324: - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2256; - case 0x25330: - r2 = r17 + r2; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x25348; - pc=0x21000; - run_21000(); return; - case 0x25348: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x25350: - r2 = 7 << 16; - r2 = r2 + -2504; - /* Next insn is delay slot */ - pc=0x252a0; - continue; - case 0x25360: - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2120; - /* Next insn is delay slot */ - pc=0x25330; - continue; - case 0x25374: - r4 = 7 << 16; - r4 = r4 + -3048; - /* Next insn is delay slot */ - r31=0x25384; - pc=0x1b000; - run_1b000(); return; - case 0x25384: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x2538c: - r4 = 7 << 16; - r4 = r4 + -5732; - r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x253a0; - pc=0x1b800; - run_1b800(); return; - case 0x253a0: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x253a8: - r3 = r0 + 64; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x25598; - run_25400(); return; - } - r3 = r0 + 128; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x25374; - continue; - } - r2 = 7 << 16; - r2 = r2 + -2920; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x25374; - continue; - } - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - r31=0x253ec; - return; - case 0x253ec: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x253f4: - /* Next insn is delay slot */ - r31=0x253fc; - pc=0x15e00; - run_15e00(); return; - case 0x253fc: - r18 = r2 + r0; - case 0x25400: - pc=0x25400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_25400() throws ExecutionException { /* 0x25400 - 0x25600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x25400: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x25410; - return; - case 0x25410: - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x2541c; - pc=0x25e00; - run_25e00(); return; - case 0x2541c: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x25428; - pc=0x25e00; - run_25e00(); return; - case 0x25428: - /* Next insn is delay slot */ - r31=0x25430; - pc=0x1ce00; - run_1ce00(); return; - case 0x25430: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x25438: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x25064; - run_25000(); return; - case 0x25444: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x24f78; - run_24e00(); return; - case 0x25450: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x25374; - run_25200(); return; - } - r2 = 7 << 16; - r17 = r17 << 2; - r2 = r2 + -2948; - r2 = r17 + r2; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2547c; - pc=0x21000; - run_21000(); return; - case 0x2547c: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x25484: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5800; - /* Next insn is delay slot */ - r31=0x25498; - pc=0x42000; - run_42000(); return; - case 0x25498: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x254a4; - pc=0x1b000; - run_1b000(); return; - case 0x254a4: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x25064; - run_25000(); return; - case 0x254b0: - r5 = 7 << 16; - r4 = r29 + 16; - r5 = r5 + -5800; - /* Next insn is delay slot */ - r31=0x254c4; - pc=0x42000; - run_42000(); return; - case 0x254c4: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x254d0; - pc=0x1b000; - run_1b000(); return; - case 0x254d0: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x24f78; - run_24e00(); return; - case 0x254dc: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2964; - r2 = r17 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r6 = tmp; - r4 = r16 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x25500; - pc=0x21000; - run_21000(); return; - case 0x25500: - addr=r29+27; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r2 = r0 + 255; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - } - r2 = 7 << 16; - r2 = readPages[(r2+30664)>>>12][((r2+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - } - r4 = 7 << 16; - r4 = r4 + -5840; - /* Next insn is delay slot */ - r31=0x25554; - pc=0x1ac00; - run_1ac00(); return; - case 0x25554: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x2555c: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2980; - /* Next insn is delay slot */ - pc=0x25108; - run_25000(); return; - case 0x25570: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2840; - /* Next insn is delay slot */ - pc=0x2517c; - run_25000(); return; - case 0x25584: - r2 = 7 << 16; - r17 = r17 << 1; - r2 = r2 + -2688; - /* Next insn is delay slot */ - pc=0x2517c; - run_25000(); return; - case 0x25598: - r2 = 7 << 16; - r2 = r2 + -2880; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r17 = 7 << 16; - r3 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = r3 & 2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x25698; - run_25600(); return; - } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x25698; - run_25600(); return; - } - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x25600; - run_25600(); return; - } - r16 = r16 & 256; - r3 = r17 + 30664; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x256b0; - run_25600(); return; - } - r20 = readPages[(r3+36)>>>12][((r3+36)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - case 0x255f4: - r20 = (r20&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r3 = r0 + 2; - r20 = r3 - r20; - case 0x25600: - pc=0x25600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_25600() throws ExecutionException { /* 0x25600 - 0x25800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x25600: - r16 = r2 << 8; - r16 = r16 | r2; - case 0x25608: - r4 = r20 + r0; - r5 = r19 + r0; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x2561c; - pc=0x21000; - run_21000(); return; - case 0x2561c: - r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 & 4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - } - addr=r29+27; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - } - r2 = r0 + 139; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x256d8; - continue; - } - r2 = r0 + 171; - if(r16 != r2) { - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - } - r4 = 7 << 16; - r4 = r4 + -5888; - /* Next insn is delay slot */ - r31=0x25684; - pc=0x1ac00; - run_1ac00(); return; - case 0x25684: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x2568c: - r7 = r16 + -127; - /* Next insn is delay slot */ - pc=0x25040; - run_25000(); return; - case 0x25698: - r16 = r2 + r0; - /* Next insn is delay slot */ - pc=0x25608; - continue; - case 0x256a4: - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x25280; - run_25200(); return; - case 0x256b0: - r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x255f4; - run_25400(); return; - case 0x256c4: - r20 = readPages[(r3+40)>>>12][((r3+40)>>>2)&0x3ff]; - r20 = ((r0 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x2526c; - run_25200(); return; - case 0x256d8: - r4 = 7 << 16; - r4 = r4 + -5936; - /* Next insn is delay slot */ - r31=0x256e8; - pc=0x1ac00; - run_1ac00(); return; - case 0x256e8: - /* Next insn is delay slot */ - pc=0x24eb8; - run_24e00(); return; - case 0x25800: - pc=0x25800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_25800() throws ExecutionException { /* 0x25800 - 0x25a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x25800: - r29 = r29 + -40; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - r18 = 7 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r16 = r18 + 16880; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - r17 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - r2 = r2 < r17 ? 1 : 0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - r19 = r4 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x25914; - continue; - } - r2 = r17 + r0; - case 0x2583c: - r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r3 = r2 < r3 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x25854; - continue; - } - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - case 0x25854: - r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r3 = r3 < r2 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2586c; - continue; - } - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; - case 0x2586c: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r5 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x25904; - continue; - } - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x258f8; - continue; - } - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; - case 0x25898: - r4 = r19 << 24; - r6 = r5 + 1; - r4 = r4 >> 24; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r6; - r3 = r3 + r5; - addr=r3+1044; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x258b0: - r3 = readPages[(r18+16880)>>>12][((r18+16880)>>>2)&0x3ff]; - r5 = r2 + 1; - r2 = r3 + r2; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff]; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r3 = r3 + 1; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff] = r3; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x258f8: - r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x25898; - continue; - } - case 0x25904: - r4 = r19 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - pc=0x258b0; - continue; - case 0x25914: - r2 = 1 << 16; - r2 = r17 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x259b4; - continue; - } - case 0x25924: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x25940; - continue; - } - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x2583c; - continue; - case 0x25940: - r4 = 7 << 16; - r4 = r4 + -1960; - /* Next insn is delay slot */ - r31=0x25950; - pc=0x1ac00; - run_1ac00(); return; - case 0x25950: - r4 = r17 + 1; - r3 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; - r17 = r17 + 2; - writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r17; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r5 = r4 < r2 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x25990; - continue; - } - case 0x25974: - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r5 = r4 < r2 ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x25974; - continue; - } - case 0x25990: - r4 = 7 << 16; - r4 = r4 + 16912; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x259cc; - continue; - } - r2 = r2 + -1; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x2583c; - continue; - case 0x259b4: - r4 = 7 << 16; - r4 = r4 + -1984; - /* Next insn is delay slot */ - r31=0x259c4; - pc=0x1b200; - run_1b200(); return; - case 0x259c4: - /* Next insn is delay slot */ - pc=0x25924; - continue; - case 0x259cc: - r2 = r0 | 65535; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x2583c; - continue; - case 0x25a00: - pc=0x25a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_25a00() throws ExecutionException { /* 0x25a00 - 0x25c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x25a00: - r29 = r29 + -40; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - r19 = r4 + r0; - r4 = 7 << 16; - r4 = r4 + -6964; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - r18 = 7 << 16; - /* Next insn is delay slot */ - r31=0x25a30; - pc=0x1b000; - run_1b000(); return; - case 0x25a30: - r2 = 2 << 16; - r2 = r2 + 22528; - r16 = r18 + 16880; - writePages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff] = r2; - r17 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - r2 = r2 < r17 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x25b34; - continue; - } - r2 = r17 + r0; - case 0x25a5c: - r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r3 = r2 < r3 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x25a74; - continue; - } - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - case 0x25a74: - r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r3 = r3 < r2 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x25a8c; - continue; - } - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; - case 0x25a8c: - r3 = readPages[(r28+-30752)>>>12][((r28+-30752)>>>2)&0x3ff]; - r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x25b24; - continue; - } - r5 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x25b18; - continue; - } - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; - case 0x25ab8: - r4 = r19 << 24; - r6 = r5 + 1; - r4 = r4 >> 24; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r6; - r3 = r3 + r5; - addr=r3+1044; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x25ad0: - r3 = readPages[(r18+16880)>>>12][((r18+16880)>>>2)&0x3ff]; - r5 = r2 + 1; - r2 = r3 + r2; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff]; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r3 = r3 + 1; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff] = r3; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x25b18: - r4 = (r5&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x25ab8; - continue; - } - case 0x25b24: - r4 = r19 << 24; - r4 = r4 >> 24; - /* Next insn is delay slot */ - pc=0x25ad0; - continue; - case 0x25b34: - r2 = 1 << 16; - r2 = r17 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x25bd4; - continue; - } - case 0x25b44: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x25b60; - continue; - } - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x25a5c; - continue; - case 0x25b60: - r4 = 7 << 16; - r4 = r4 + -1960; - /* Next insn is delay slot */ - r31=0x25b70; - pc=0x1ac00; - run_1ac00(); return; - case 0x25b70: - r5 = r17 + 1; - r3 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; - r17 = r17 + 2; - writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r17; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r4 = r5 < r2 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x25bb0; - continue; - } - case 0x25b94: - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r4 = r5 < r2 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x25b94; - continue; - } - case 0x25bb0: - r4 = 7 << 16; - r4 = r4 + 16912; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x25bec; - continue; - } - r2 = r2 + -1; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x25a5c; - continue; - case 0x25bd4: - r4 = 7 << 16; - r4 = r4 + -1984; - /* Next insn is delay slot */ - r31=0x25be4; - pc=0x1b200; - run_1b200(); return; - case 0x25be4: - /* Next insn is delay slot */ - pc=0x25b44; - continue; - case 0x25bec: - r2 = r0 | 65535; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x25a5c; - continue; - case 0x25c00: - pc=0x25c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_25c00() throws ExecutionException { /* 0x25c00 - 0x25e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x25c00: - r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r18 = r4 + r0; - if(r4 <= 0) { - /* Next insn is delay slot */ - pc=0x25c9c; - continue; - } - r2 = 2 << 16; - r3 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r2 = r2 + 23040; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x25d80; - continue; - } - case 0x25c34: - r16 = 7 << 16; - r16 = r16 + 16880; - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r4 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - r17 = r3 + r18; - r2 = r17 + -1; - r4 = r4 < r2 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x25cc4; - continue; - } - case 0x25c58: - r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r4 = r3 < r4 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x25c70; - continue; - } - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r3; - case 0x25c70: - r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r3 = r3 < r2 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x25cb8; - continue; - } - case 0x25c84: - r2 = 7 << 16; - r2 = r2 + 30664; - r3 = readPages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff]; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r17; - r18 = r3 + r18; - writePages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff] = r18; - case 0x25c9c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x25cb8: - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x25c84; - continue; - case 0x25cc4: - r3 = 1 << 16; - r2 = r2 < r3 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x25d68; - continue; - } - case 0x25cd4: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x25cfc; - continue; - } - case 0x25ce4: - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r17 = r18 + r3; - r2 = r17 + -1; - /* Next insn is delay slot */ - pc=0x25c58; - continue; - case 0x25cfc: - r4 = 7 << 16; - r4 = r4 + -1960; - /* Next insn is delay slot */ - r31=0x25d0c; - pc=0x1ac00; - run_1ac00(); return; - case 0x25d0c: - r3 = r17 + 1; - r2 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; - writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = r17 < r3 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x25d48; - continue; - } - case 0x25d2c: - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = r17 < r3 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x25d2c; - continue; - } - case 0x25d48: - r4 = 7 << 16; - r4 = r4 + 16912; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x25d98; - continue; - } - r3 = r3 + -1; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x25ce4; - continue; - case 0x25d68: - r4 = 7 << 16; - r4 = r4 + -1984; - /* Next insn is delay slot */ - r31=0x25d78; - pc=0x1b200; - run_1b200(); return; - case 0x25d78: - /* Next insn is delay slot */ - pc=0x25cd4; - continue; - case 0x25d80: - r4 = r0 + r0; - /* Next insn is delay slot */ - r31=0x25d8c; - pc=0x25a00; - run_25a00(); return; - case 0x25d8c: - r18 = r18 + -1; - /* Next insn is delay slot */ - pc=0x25c34; - continue; - case 0x25d98: - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = r0 | 65535; - r17 = r18 + r3; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; - r2 = r17 + -1; - /* Next insn is delay slot */ - pc=0x25c58; - continue; - case 0x25e00: - pc=0x25e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_25e00() throws ExecutionException { /* 0x25e00 - 0x26000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x25e00: - r2 = r4 + 128; - r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x25e20; - continue; - } - r4 = 7 << 16; - r4 = r4 + -6936; - /* Next insn is delay slot */ - pc=0x1b000; - run_1b000(); return; - case 0x25e20: - r25 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r25; - return; - case 0x26000: - pc=0x26000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_26000() throws ExecutionException { /* 0x26000 - 0x26200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x26000: r3 = r0 | 32768; r2 = 1 << 16; r3 = r4 + r3; r2 = r2 | 32768; r29 = r29 + -24; r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; r16 = r4 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x26048; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x22240; continue; } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -6936; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=0x1b000; - run_1b000(); return; - case 0x26048: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - r31=0x26058; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29696; + /* Next insn is delay slot */ + r31 = 0x22240; + pc = 0x20600; + run_20600(); return; - case 0x26058: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + case 0x22240: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; r4 = r16 >> 8; - r25 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x22250; + return; + case 0x22250: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r16 + r0; + r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r25; + /* Next insn is delay slot */ + pc = r25; return; - case 0x26200: - pc=0x26200; + case 0x22400: + pc = 0x22400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_26200() throws ExecutionException { /* 0x26200 - 0x26400 */ + + private final void run_22400() throws ExecutionException { /* 0x22400 - 0x22600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x26200: + for (;;) { + switch (pc) { + case 0x22400: + r3 = r0 | 32768; + r2 = 1 << 16; + r3 = r4 + r3; + r2 = r2 | 32768; + r29 = r29 + -24; + r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x22440; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29696; + /* Next insn is delay slot */ + r31 = 0x22440; + pc = 0x20600; + run_20600(); + return; + case 0x22440: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r16 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x22450; + return; + case 0x22450: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r16 >> 8; + r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r25; + return; + case 0x22600: + pc = 0x22600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_22600() throws ExecutionException { /* 0x22600 - 0x22800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x22600: r2 = 128 << 16; r2 = r4 + r2; r3 = 384 << 16; r29 = r29 + -24; r2 = ((r2 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; r16 = r4 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x26244; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2263c; continue; } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -6936; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=0x1b000; - run_1b000(); return; - case 0x26244: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - r31=0x26254; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29664; + /* Next insn is delay slot */ + r31 = 0x2263c; + pc = 0x20600; + run_20600(); return; - case 0x26254: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; + case 0x2263c: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r16 >> 16; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x2264c; + return; + case 0x2264c: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; r4 = r16 >> 8; - /* Next insn is delay slot */ - pc=r2; - r31=0x26264; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x2265c; + return; + case 0x2265c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r16 + r0; + r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r25; + return; + case 0x22800: + pc = 0x22800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_22800() throws ExecutionException { /* 0x22800 - 0x22a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x22800: + r2 = 128 << 16; + r2 = r4 + r2; + r3 = 384 << 16; + r29 = r29 + -24; + r2 = ((r2 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2283c; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29664; + /* Next insn is delay slot */ + r31 = 0x2283c; + pc = 0x20600; + run_20600(); + return; + case 0x2283c: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r16 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x2284c; + return; + case 0x2284c: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r16 >> 8; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x2285c; + return; + case 0x2285c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r16 >> 16; + r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r25; + return; + case 0x22a00: + pc = 0x22a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_22a00() throws ExecutionException { /* 0x22a00 - 0x22c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x22a00: + r29 = r29 + -24; + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = r4 >> 24; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x22a20; + return; + case 0x22a20: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r16 >> 16; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x22a30; + return; + case 0x22a30: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r16 >> 8; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x22a40; + return; + case 0x22a40: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r16 + r0; + r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r25; + return; + case 0x22c00: + pc = 0x22c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_22c00() throws ExecutionException { /* 0x22c00 - 0x22e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x22c00: + r29 = r29 + -24; + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x22c1c; + return; + case 0x22c1c: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r16 >> 8; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x22c2c; + return; + case 0x22c2c: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r16 >> 16; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x22c3c; + return; + case 0x22c3c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r16 >> 24; + r25 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r25; + return; + case 0x22e00: + pc = 0x22e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_22e00() throws ExecutionException { /* 0x22e00 - 0x23000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x22e00: + r2 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + r29 = r29 + -80; + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r17; + r17 = r4 + r0; + r4 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r16; + if (r4 == r3) { + /* Next insn is delay slot */ + pc = 0x22ecc; + continue; + } + r6 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r4 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r5 = r5 + 29896; + /* Next insn is delay slot */ + r31 = 0x22e50; + pc = 0x42000; + run_42000(); + return; + case 0x22e50: + r2 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r3; + addr = r28 + -31336; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x22e64: + r3 = r0 + 10; + if (r17 == r3) { + /* Next insn is delay slot */ + pc = 0x22ea0; + continue; + } + r3 = r0 + 13; + if (r17 == r3) { + /* Next insn is delay slot */ + pc = 0x22ea0; + continue; + } + r3 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r4 = (r3 & 0xffffffffL) < (1024 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x22ea0; + continue; + } + r4 = r3 + 1; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r4; + r2 = r2 + r3; + addr = r2 + 20; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r17 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x22ea0: + r31 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + addr = r28 + -31336; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r17 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r17 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r29 = r29 + 80; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x22ecc: + addr = r28 + -31336; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r5 = tmp; + r3 = r0 + 10; + if (r5 != r3) { + /* Next insn is delay slot */ + pc = 0x22e64; + continue; + } + r6 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r5 = r5 + 29920; + r6 = r6 + -1; + /* Next insn is delay slot */ + r31 = 0x22ef8; + pc = 0x42000; + run_42000(); + return; + case 0x22ef8: + r2 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + r3 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x22f8c; + continue; + } + addr = r29 + 36; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + addr = r29 + 16; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r21 = r29 + 36; + r20 = r29 + 16; + case 0x22f20: + r4 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r6 = r21 + r0; + r5 = r5 + 29944; + r7 = r20 + r0; + /* Next insn is delay slot */ + r31 = 0x22f3c; + pc = 0x42000; + run_42000(); + return; + case 0x22f3c: + r6 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + r3 = r0 + 1024; + r2 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x23024; + run_23000(); + return; + } + case 0x22f54: + r2 = r6 + r2; + r4 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + r5 = 5 << 16; + addr = r2 + 20; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r5 = r5 + 29916; + r6 = r6 + 20; + /* Next insn is delay slot */ + r31 = 0x22f74; + pc = 0x42000; + run_42000(); + return; + case 0x22f74: + r2 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x22e64; + continue; + case 0x22f8c: + r21 = r29 + 36; + r5 = 5 << 16; + r6 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r4 = r21 + r0; + r5 = r5 + 29928; + /* Next insn is delay slot */ + r31 = 0x22fa8; + pc = 0x47400; + run_47400(); + return; + case 0x22fa8: + r2 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + r20 = r29 + 16; + r3 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + addr = r29 + 16; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x22f20; + continue; + } + r19 = 5 << 16; + r18 = r20 + r0; + r16 = r0 + r0; + r19 = r19 + 29936; + case 0x22fd0: + r2 = r2 + r16; + addr = r2 + 1044; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r6 = tmp; + r4 = r18 + r0; + r5 = r19 + r0; + /* Next insn is delay slot */ + r31 = 0x22fe8; + pc = 0x47400; + run_47400(); + return; + case 0x22fe8: + r2 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + r16 = r16 + 1; + r3 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r18 = r18 + 2; + r4 = ((r16 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x22fd0; + continue; + } + case 0x23000: + pc = 0x23000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_23000() throws ExecutionException { /* 0x23000 - 0x23200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x23000: + r4 = r0 + 9; + if (r3 != r4) { + /* Next insn is delay slot */ + pc = 0x22f20; + run_22e00(); + return; + } + r3 = 11822 << 16; + r3 = r3 + 11776; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x22f20; + run_22e00(); + return; + case 0x23024: + r2 = r0 + 1023; + writePages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x22f54; + run_22e00(); + return; + case 0x23200: + pc = 0x23200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_23200() throws ExecutionException { /* 0x23200 - 0x23400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x23200: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r3 = r0 + 1; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r4; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r5; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x23400: + pc = 0x23400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_23400() throws ExecutionException { /* 0x23400 - 0x23600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x23400: + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r29 = r29 + -48; + r5 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x234c0; + continue; + } + r2 = r0 + 1; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x2349c; + continue; + } + r4 = 5 << 16; + r4 = r4 + 30016; + /* Next insn is delay slot */ + r31 = 0x2344c; + pc = 0x21a00; + run_21a00(); + return; + case 0x2344c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + case 0x23450: + r3 = r0 + 10; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x23474; + continue; + } + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + r4 = r4 + 1; + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r4; + case 0x23474: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2349c: + r2 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r4 = r2 + 1; + writePages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff] = r4; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + continue; + case 0x234c0: + r20 = 5 << 16; + r4 = 5 << 16; + r5 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + r20 = r20 + 30408; + r19 = r4 + 29996; + r17 = r0 + -1; + r18 = r0 + 13; + r16 = r0 + 10; + case 0x234e0: + r2 = (r5 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x23900; + run_23800(); + return; + } + case 0x234ec: + r5 = r5 << 2; + r5 = r20 + r5; + r2 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + return; + case 0x23504: + if (r2 == r17) { + /* Next insn is delay slot */ + pc = 0x23610; + run_23600(); + return; + } + if (r2 == r18) { + /* Next insn is delay slot */ + pc = 0x23610; + run_23600(); + return; + } + if (r2 == r16) { + /* Next insn is delay slot */ + pc = 0x23610; + run_23600(); + return; + } + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + case 0x23524: + r4 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x238e8; + run_23800(); + return; + } + r3 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r4 = r2 + 1; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + case 0x23560: + r3 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + writePages[(r28 + -31332) >>> 12][((r28 + -31332) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x23504; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + /* Next insn is delay slot */ + r31 = 0x23588; + pc = 0x22e00; + run_22e00(); + return; + case 0x23588: + r2 = readPages[(r28 + -31332) >>> 12][((r28 + -31332) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x23504; + continue; + case 0x23594: + r4 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r19 = r0 + 9; + r2 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + r21 = r0 + 32; + r2 = r2 + -1; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x238d0; + run_23800(); + return; + } + case 0x235b4: + r3 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r4 = r2 + 1; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + case 0x235d0: + r3 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + writePages[(r28 + -31332) >>> 12][((r28 + -31332) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x23600; + run_23600(); + return; + } + r4 = r2 << 24; + r4 = r4 >> 24; + /* Next insn is delay slot */ + r31 = 0x235f8; + pc = 0x22e00; + run_22e00(); + return; + case 0x235f8: + r2 = readPages[(r28 + -31332) >>> 12][((r28 + -31332) >>> 2) & 0x3ff]; + case 0x23600: + pc = 0x23600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_23600() throws ExecutionException { /* 0x23600 - 0x23800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x23600: + if (r2 == r19) { + /* Next insn is delay slot */ + pc = 0x238a8; + run_23800(); + return; + } + if (r2 == r21) { + /* Next insn is delay slot */ + pc = 0x238a8; + run_23800(); + return; + } + case 0x23610: + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r2 = r0 + 2; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + r5 = r0 + 2; + /* Next insn is delay slot */ + pc = 0x234ec; + run_23400(); + return; + case 0x23628: + r4 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x2396c; + run_23800(); + return; + } + r3 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r4 = r2 + 1; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + case 0x23664: + r3 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + writePages[(r28 + -31332) >>> 12][((r28 + -31332) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x239e0; + run_23800(); + return; + } + r4 = r2 << 24; + r4 = r4 >> 24; + /* Next insn is delay slot */ + r31 = 0x2368c; + pc = 0x22e00; + run_22e00(); + return; + case 0x2368c: + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + case 0x23690: + r2 = readPages[(r28 + -31332) >>> 12][((r28 + -31332) >>> 2) & 0x3ff]; + case 0x23694: + r4 = r0 + 1; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r4; + r4 = r0 + -1; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x239c8; + run_23800(); + return; + } + r5 = 5 << 16; + r4 = r2 & 255; + r5 = r5 + 29340; + r4 = r4 + r5; + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r4 = tmp; + r4 = r4 & 16; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x239b4; + run_23800(); + return; + } + r4 = r0 + 32; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x23aa4; + run_23a00(); + return; + } + r4 = r2 < 33 ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x23920; + run_23800(); + return; + } + r4 = r0 + 58; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x23aec; + run_23a00(); + return; + } + r4 = r2 < 59 ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x239ec; + run_23800(); + return; + } + r4 = r0 + 59; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x23a8c; + run_23a00(); + return; + } + r4 = r0 + 125; + if (r2 != r4) { + /* Next insn is delay slot */ + pc = 0x23944; + run_23800(); + return; + } + r2 = r0 + 8; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x2372c: + r4 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x2399c; + run_23800(); + return; + } + r3 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r4 = r2 + 1; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + case 0x23768: + r3 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + writePages[(r28 + -31332) >>> 12][((r28 + -31332) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x23794; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + /* Next insn is delay slot */ + r31 = 0x23790; + pc = 0x22e00; + run_22e00(); + return; + case 0x23790: + r2 = readPages[(r28 + -31332) >>> 12][((r28 + -31332) >>> 2) & 0x3ff]; + case 0x23794: + r3 = r0 + 35; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x23610; + continue; + } + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r3 = r0 + 7; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + r2 = r0 + r0; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x237bc: + r2 = r0 + 1; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + r2 = r0 + 13; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x237d4: + r2 = r0 + 1; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + r2 = r0 + 125; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x237ec: + r4 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + r2 = r2 + -1; + case 0x23800: + pc = 0x23800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_23800() throws ExecutionException { /* 0x23800 - 0x23a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x23800: + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x23984; + continue; + } + r3 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r4 = r2 + 1; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + case 0x23828: + r3 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + writePages[(r28 + -31332) >>> 12][((r28 + -31332) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x23858; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + /* Next insn is delay slot */ + r31 = 0x23850; + pc = 0x22e00; + run_22e00(); + return; + case 0x23850: + r2 = readPages[(r28 + -31332) >>> 12][((r28 + -31332) >>> 2) & 0x3ff]; + case 0x23858: + if (r2 != r16) { + /* Next insn is delay slot */ + pc = 0x23610; + run_23600(); + return; + } + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r2 = r0 + 1; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + r5 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x234ec; + run_23400(); + return; + case 0x23878: + r2 = r0 + 6; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + r2 = r0 + 10; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x23890: + r2 = r0 + 1; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + r2 = r0 + 10; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x238a8: + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r4 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r2; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x235b4; + run_23400(); + return; + } + case 0x238d0: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x238e0; + pc = 0x47200; + run_47200(); + return; + case 0x238e0: + /* Next insn is delay slot */ + pc = 0x235d0; + run_23400(); + return; + case 0x238e8: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x238f8; + pc = 0x47200; + run_47200(); + return; + case 0x238f8: + /* Next insn is delay slot */ + pc = 0x23560; + run_23400(); + return; + case 0x23900: + r4 = r19 + r0; + /* Next insn is delay slot */ + r31 = 0x2390c; + pc = 0x21a00; + run_21a00(); + return; + case 0x2390c: + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r5 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x234e0; + run_23400(); + return; + case 0x23920: + r4 = r0 + 10; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x23ad4; + run_23a00(); + return; + } + r4 = r0 + 13; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x23abc; + run_23a00(); + return; + } + r4 = r0 + 9; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x23aa4; + run_23a00(); + return; + } + case 0x23944: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29956; + /* Next insn is delay slot */ + r31 = 0x23958; + pc = 0x20600; + run_20600(); + return; + case 0x23958: + addr = r28 + -31329; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x2396c: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2397c; + pc = 0x47200; + run_47200(); + return; + case 0x2397c: + /* Next insn is delay slot */ + pc = 0x23664; + run_23600(); + return; + case 0x23984: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x23994; + pc = 0x47200; + run_47200(); + return; + case 0x23994: + /* Next insn is delay slot */ + pc = 0x23828; + continue; + case 0x2399c: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x239ac; + pc = 0x47200; + run_47200(); + return; + case 0x239ac: + /* Next insn is delay slot */ + pc = 0x23768; + run_23600(); + return; + case 0x239b4: + r2 = r2 << 24; + r2 = r2 >> 24; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x239c8: + r2 = r0 + 9; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x239e0: + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x23694; + run_23600(); + return; + case 0x239ec: + r4 = r0 + 47; + if (r2 != r4) { + /* Next insn is delay slot */ + pc = 0x23944; + continue; + } + r4 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + case 0x23a00: + pc = 0x23a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_23a00() throws ExecutionException { /* 0x23a00 - 0x23c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x23a00: + r2 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x23afc; + continue; + } + r3 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r4 = r2 + 1; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + case 0x23a34: + r3 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + writePages[(r28 + -31332) >>> 12][((r28 + -31332) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x23a60; + continue; + } + r4 = r2 << 24; + r4 = r4 >> 24; + /* Next insn is delay slot */ + r31 = 0x23a5c; + pc = 0x22e00; + run_22e00(); + return; + case 0x23a5c: + r2 = readPages[(r28 + -31332) >>> 12][((r28 + -31332) >>> 2) & 0x3ff]; + case 0x23a60: + r3 = r0 + 47; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x23a88; + continue; + } + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r3 = r0 + 2; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + r2 = r0 + 47; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x23a88: + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + case 0x23a8c: + r2 = r0 + 7; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x23aa4: + r2 = r0 + 3; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + r2 = r0 + 32; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x23abc: + r2 = r0 + 5; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x23ad4: + r2 = r0 + 4; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x23aec: + r2 = r0 + r0; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x23450; + run_23400(); + return; + case 0x23afc: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x23b0c; + pc = 0x47200; + run_47200(); + return; + case 0x23b0c: + /* Next insn is delay slot */ + pc = 0x23a34; + continue; + case 0x23c00: + pc = 0x23c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_23c00() throws ExecutionException { /* 0x23c00 - 0x23e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x23c00: + r29 = r29 + -40; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + r18 = 5 << 16; + r18 = r18 + 29340; + r2 = r18 + r2; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + r2 = r2 & 64; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x23cc0; + continue; + } + r19 = 6 << 16; + r16 = r19 + -24536; + r17 = r0 + r0; + r20 = r16 + r0; + /* Next insn is delay slot */ + pc = 0x23c94; + continue; + case 0x23c54: + r4 = readPages[(r19 + -24536) >>> 12][((r19 + -24536) >>> 2) & 0x3ff]; + r2 = r3 + 1; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r4 + r3; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + r31 = 0x23c74; + pc = 0x23400; + run_23400(); + return; + case 0x23c74: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + r17 = r17 + 1; + r2 = r18 + r2; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + r2 = r2 & 64; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x23cd8; + continue; + } + case 0x23c94: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x23c54; + continue; + } + r4 = r20 + r0; + /* Next insn is delay slot */ + r31 = 0x23cb4; + pc = 0x1c600; + run_1c600(); + return; + case 0x23cb4: + r3 = readPages[(r20 + 4) >>> 12][((r20 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x23c54; + continue; + case 0x23cc0: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29876; + /* Next insn is delay slot */ + r31 = 0x23cd4; + pc = 0x20600; + run_20600(); + return; + case 0x23cd4: + r17 = r0 + r0; + case 0x23cd8: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r2 = r17 + r0; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x23e00: + pc = 0x23e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_23e00() throws ExecutionException { /* 0x23e00 - 0x24000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x23e00: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r29 = r29 + -24; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x23e2c; + continue; + } + case 0x23e14: + /* Next insn is delay slot */ + r31 = 0x23e1c; + pc = 0x23400; + run_23400(); + return; + case 0x23e1c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x23e14; + continue; + } + case 0x23e2c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x24000: + pc = 0x24000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_24000() throws ExecutionException { /* 0x24000 - 0x24200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x24000: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r7 = tmp; + r29 = r29 + -112; + r2 = r0 + 32; + writePages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff] = r31; + if (r7 == r2) { + /* Next insn is delay slot */ + pc = 0x2409c; + continue; + } + case 0x24018: + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x24080; + continue; + } + r2 = r0 + 39; + if (r7 == r2) { + /* Next insn is delay slot */ + pc = 0x24090; + continue; + } + r6 = r0 + 39; + case 0x24030: + r5 = 5 << 16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r6; + r4 = r29 + 24; + r5 = r5 + 30032; + /* Next insn is delay slot */ + r31 = 0x24048; + pc = 0x47400; + run_47400(); + return; + case 0x24048: + r4 = r0 + -2; + r5 = r29 + 24; + /* Next insn is delay slot */ + r31 = 0x24058; + pc = 0x20600; + run_20600(); + return; + case 0x24058: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x24080; + continue; + } + case 0x24068: + /* Next insn is delay slot */ + r31 = 0x24070; + pc = 0x23400; + run_23400(); + return; + case 0x24070: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x24068; + continue; + } + case 0x24080: + r31 = readPages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff]; + r29 = r29 + 112; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x24090: + r6 = r0 + 34; + /* Next insn is delay slot */ + pc = 0x24030; + continue; + case 0x2409c: + /* Next insn is delay slot */ + r31 = 0x240a4; + pc = 0x23400; + run_23400(); + return; + case 0x240a4: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r7 = tmp; + /* Next insn is delay slot */ + pc = 0x24018; + continue; + case 0x24200: + pc = 0x24200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_24200() throws ExecutionException { /* 0x24200 - 0x24400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x24200: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r29 = r29 + -56; + r5 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + r17 = 6 << 16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + r19 = 5 << 16; + r18 = r4 << 24; + r20 = 5 << 16; + r23 = r17 + -24536; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r30; + r18 = r18 >> 24; + r16 = r0 + r0; + r19 = r19 + 30088; + r20 = r20 + 30016; + r22 = 6 << 16; + r21 = r23 + r0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x242f8; + continue; + } + case 0x24268: + r3 = r0 + 1; + if (r5 != r3) { + /* Next insn is delay slot */ + pc = 0x24430; + run_24400(); + return; + } + r3 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r4 = r3 + 1; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r4; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x243ac; + continue; + } + case 0x24298: + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x24404; + run_24400(); + return; + } + if (r2 == r18) { + /* Next insn is delay slot */ + pc = 0x244fc; + run_24400(); + return; + } + r3 = r0 + 92; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x24454; + run_24400(); + return; + } + case 0x242b4: + r2 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; + r3 = readPages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff]; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x24418; + run_24400(); + return; + } + case 0x242c8: + r3 = r2 + 1; + r4 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + writePages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff] = r3; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r4 + r2; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r5 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x24268; + continue; + } + case 0x242f8: + r4 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r3 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + r3 = r3 + -1; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r3; + if (r3 < 0) { + /* Next insn is delay slot */ + pc = 0x244e0; + run_24400(); + return; + } + r3 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r4 = r2 + 1; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r30 = tmp; + case 0x24334: + r2 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2435c; + continue; + } + r4 = r30 << 24; + r4 = r4 >> 24; + /* Next insn is delay slot */ + r31 = 0x2435c; + pc = 0x22e00; + run_22e00(); + return; + case 0x2435c: + r2 = r0 + 10; + if (r30 == r2) { + /* Next insn is delay slot */ + pc = 0x2439c; + continue; + } + r2 = r0 + 13; + if (r30 == r2) { + /* Next insn is delay slot */ + pc = 0x244a8; + run_24400(); + return; + } + r2 = r0 + -1; + if (r30 == r2) { + /* Next insn is delay slot */ + pc = 0x24470; + run_24400(); + return; + } + r2 = r30 << 24; + r2 = r2 >> 24; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x24298; + continue; + } + /* Next insn is delay slot */ + pc = 0x243ac; + continue; + case 0x2439c: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r3 = r0 + 4; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x243ac: + r4 = r0 + -2; + r5 = r19 + r0; + /* Next insn is delay slot */ + r31 = 0x243bc; + pc = 0x20600; + run_20600(); + return; + case 0x243bc: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x24298; + continue; + } + case 0x243cc: + r2 = r0 + 1; + case 0x243d0: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 56; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x24400: + pc = 0x24400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_24400() throws ExecutionException { /* 0x24400 - 0x24600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x24400: + case 0x24404: + r2 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; + r3 = readPages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff]; + r16 = r0 + r0; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x242c8; + run_24200(); + return; + } + case 0x24418: + r4 = r21 + r0; + /* Next insn is delay slot */ + r31 = 0x24424; + pc = 0x1c600; + run_1c600(); + return; + case 0x24424: + r2 = readPages[(r21 + 4) >>> 12][((r21 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x242c8; + run_24200(); + return; + case 0x24430: + r4 = r20 + r0; + /* Next insn is delay slot */ + r31 = 0x2443c; + pc = 0x21a00; + run_21a00(); + return; + case 0x2443c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x24298; + run_24200(); + return; + } + /* Next insn is delay slot */ + pc = 0x243ac; + run_24200(); + return; + case 0x24454: + r2 = r22 + -10308; + r16 = readPages[(r2 + 52) >>> 12][((r2 + 52) >>> 2) & 0x3ff]; + r16 = (r16 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; + r16 = r16 ^ 1; + /* Next insn is delay slot */ + pc = 0x242b4; + run_24200(); + return; + case 0x24470: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r3 = r0 + 9; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + r4 = r0 + -2; + r5 = r19 + r0; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + r31 = 0x24490; + pc = 0x20600; + run_20600(); + return; + case 0x24490: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x24298; + run_24200(); + return; + } + /* Next insn is delay slot */ + pc = 0x243cc; + run_24200(); + return; + case 0x244a8: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r3 = r0 + 5; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + r4 = r0 + -2; + r5 = r19 + r0; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + r31 = 0x244c8; + pc = 0x20600; + run_20600(); + return; + case 0x244c8: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x24298; + run_24200(); + return; + } + /* Next insn is delay slot */ + pc = 0x243cc; + run_24200(); + return; + case 0x244e0: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x244f0; + pc = 0x47200; + run_47200(); + return; + case 0x244f0: + r30 = r2 + r0; + /* Next insn is delay slot */ + pc = 0x24334; + run_24200(); + return; + case 0x244fc: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x243d0; + run_24200(); + return; + case 0x24600: + pc = 0x24600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_24600() throws ExecutionException { /* 0x24600 - 0x24800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x24600: + r2 = 6 << 16; + r2 = readPages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff]; + r2 = (r2 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x247d0; + continue; + } + r29 = r29 + -56; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + r19 = 6 << 16; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + r20 = r19 + -24536; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + r5 = 5 << 16; + r17 = r4 + r0; + r4 = readPages[(r20 + 4) >>> 12][((r20 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r18 = r17 + r0; + r6 = r0 + r0; + r21 = r0 + 92; + r30 = r5 + 30124; + r22 = r0 + 114; + r23 = r0 + 116; + case 0x24670: + r2 = ((r17 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; + r3 = r17 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x24704; + continue; + } + case 0x24680: + r2 = readPages[(r19 + -24536) >>> 12][((r19 + -24536) >>> 2) & 0x3ff]; + r17 = r17 + 1; + r3 = r2 + r3; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r16 = tmp; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x24754; + continue; + } + if (r16 == r21) { + /* Next insn is delay slot */ + pc = 0x246e0; + continue; + } + r3 = r16 < 93 ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x24774; + continue; + } + if (r16 == r22) { + /* Next insn is delay slot */ + pc = 0x247b0; + continue; + } + if (r16 == r23) { + /* Next insn is delay slot */ + pc = 0x247a4; + continue; + } + r3 = r0 + 110; + if (r16 == r3) { + /* Next insn is delay slot */ + pc = 0x24748; + continue; + } + case 0x246c8: + r4 = r0 + -2; + r5 = r30 + r0; + /* Next insn is delay slot */ + r31 = 0x246d8; + pc = 0x20600; + run_20600(); + return; + case 0x246d8: + r2 = readPages[(r19 + -24536) >>> 12][((r19 + -24536) >>> 2) & 0x3ff]; + case 0x246e0: + r2 = r2 + r18; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r16 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r4 = readPages[(r20 + 4) >>> 12][((r20 + 4) >>> 2) & 0x3ff]; + r18 = r18 + 1; + r2 = ((r17 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; + r6 = r0 + r0; + r3 = r17 + r0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x24680; + continue; + } + case 0x24704: + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x247dc; + continue; + } + case 0x2470c: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + writePages[(r20 + 4) >>> 12][((r20 + 4) >>> 2) & 0x3ff] = r18; + r30 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 56; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x24748: + r16 = r0 + 10; + /* Next insn is delay slot */ + pc = 0x246e0; + continue; + case 0x24754: + if (r16 == r21) { + /* Next insn is delay slot */ + pc = 0x24798; + continue; + } + r2 = r2 + r18; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r16 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r4 = readPages[(r20 + 4) >>> 12][((r20 + 4) >>> 2) & 0x3ff]; + r18 = r18 + 1; + /* Next insn is delay slot */ + pc = 0x24670; + continue; + case 0x24774: + r3 = r0 + 39; + if (r16 == r3) { + /* Next insn is delay slot */ + pc = 0x246e0; + continue; + } + r3 = r0 + 48; + if (r16 != r3) { + /* Next insn is delay slot */ + pc = 0x247bc; + continue; + } + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x246e0; + continue; + case 0x24798: + r6 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x24670; + continue; + case 0x247a4: + r16 = r0 + 9; + /* Next insn is delay slot */ + pc = 0x246e0; + continue; + case 0x247b0: + r16 = r0 + 13; + /* Next insn is delay slot */ + pc = 0x246e0; + continue; + case 0x247bc: + r3 = r0 + 34; + if (r16 != r3) { + /* Next insn is delay slot */ + pc = 0x246c8; + continue; + } + /* Next insn is delay slot */ + pc = 0x246e0; + continue; + case 0x247d0: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x247dc: + r4 = 5 << 16; + r4 = r4 + 30156; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x247f0; + pc = 0x21a00; + run_21a00(); + return; + case 0x247f0: + /* Next insn is delay slot */ + pc = 0x2470c; + continue; + case 0x24800: + pc = 0x24800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_24800() throws ExecutionException { /* 0x24800 - 0x24a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x24800: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + r16 = 6 << 16; + r16 = r16 + -24536; + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x24874; + continue; + } + /* Next insn is delay slot */ + r31 = 0x24828; + pc = 0x24600; + run_24600(); + return; + case 0x24828: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x24848; + continue; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x24848: + r4 = r16 + r0; + r5 = r0 + r0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x2485c; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x2485c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x24874: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 30180; + /* Next insn is delay slot */ + r31 = 0x24888; + pc = 0x20600; + run_20600(); + return; + case 0x24888: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x24a00: + pc = 0x24a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_24a00() throws ExecutionException { /* 0x24a00 - 0x24c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x24a00: + r29 = r29 + -64; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r18; + r18 = 6 << 16; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + r23 = r4 + r0; + r16 = r18 + -24536; + r4 = r18 + -24536; + r22 = 5 << 16; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + r17 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x24a48; + pc = 0x1c400; + run_1c400(); + return; + case 0x24a48: + r21 = r16 + r0; + r19 = r0 + 39; + r20 = r0 + 123; + r22 = r22 + 29784; + case 0x24a58: + /* Next insn is delay slot */ + r31 = 0x24a60; + pc = 0x23400; + run_23400(); + return; + case 0x24a60: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r3 == r4) { + /* Next insn is delay slot */ + pc = 0x24be0; + continue; + } + case 0x24a74: + r4 = readPages[(r18 + -24536) >>> 12][((r18 + -24536) >>> 2) & 0x3ff]; + r5 = r3 + 1; + r3 = r4 + r3; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r5; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 == r19) { + /* Next insn is delay slot */ + pc = 0x24b30; + continue; + } + r3 = r2 < 40 ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x24b18; + continue; + } + if (r2 == r20) { + /* Next insn is delay slot */ + pc = 0x24b78; + continue; + } + r3 = r0 + 125; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x24ab4; + continue; + } + r17 = r17 + -1; + case 0x24ab4: + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x24a58; + continue; + } + case 0x24abc: + if (r23 == r0) { + /* Next insn is delay slot */ + pc = 0x24c00; + run_24c00(); + return; + } + r4 = r18 + -24536; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x24ad4; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x24ad4: + r4 = r18 + -24536; + r5 = r0 + 13; + /* Next insn is delay slot */ + r31 = 0x24ae4; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x24ae4: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r4 = r18 + -24536; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r29 = r29 + 64; + /* Next insn is delay slot */ + pc = 0x1c800; + run_1c800(); + return; + case 0x24b18: + r3 = r0 + 13; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x24b8c; + continue; + } + r3 = r0 + 34; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x24ab4; + continue; + } + case 0x24b30: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x24b3c; + pc = 0x24200; + run_24200(); + return; + case 0x24b3c: + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x24bc8; + continue; + } + case 0x24b50: + r3 = r2 + 1; + r4 = readPages[(r18 + -24536) >>> 12][((r18 + -24536) >>> 2) & 0x3ff]; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r3; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r4 + r2; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x24a58; + continue; + } + /* Next insn is delay slot */ + pc = 0x24abc; + continue; + case 0x24b78: + r17 = r17 + 1; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x24a58; + continue; + } + /* Next insn is delay slot */ + pc = 0x24abc; + continue; + case 0x24b8c: + r4 = r0 + -3; + r5 = r22 + r0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x24ba0; + pc = 0x20600; + run_20600(); + return; + case 0x24ba0: + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x24bb4; + pc = 0x24200; + run_24200(); + return; + case 0x24bb4: + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x24b50; + continue; + } + case 0x24bc8: + r4 = r21 + r0; + /* Next insn is delay slot */ + r31 = 0x24bd4; + pc = 0x1c600; + run_1c600(); + return; + case 0x24bd4: + r2 = readPages[(r21 + 4) >>> 12][((r21 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x24b50; + continue; + case 0x24be0: + r4 = r21 + r0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x24bf0; + pc = 0x1c600; + run_1c600(); + return; + case 0x24bf0: + r3 = readPages[(r21 + 4) >>> 12][((r21 + 4) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x24a74; + continue; + case 0x24c00: + pc = 0x24c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_24c00() throws ExecutionException { /* 0x24c00 - 0x24e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x24c00: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 64; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x24e00: + pc = 0x24e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_24e00() throws ExecutionException { /* 0x24e00 - 0x25000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x24e00: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r5 = tmp; + r29 = r29 + -24; + r2 = r0 + 46; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x24e88; + continue; + } + r2 = r0 + 64; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x24e88; + continue; + } + r2 = 5 << 16; + r2 = r2 + 29340; + r5 = r5 & 255; + r5 = r5 + r2; + addr = r5 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x24e60; + continue; + } + case 0x24e44: + /* Next insn is delay slot */ + r31 = 0x24e4c; + pc = 0x23c00; + run_23c00(); + return; + case 0x24e4c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x24e60: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29876; + /* Next insn is delay slot */ + r31 = 0x24e74; + pc = 0x20600; + run_20600(); + return; + case 0x24e74: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x24e88: + r4 = 6 << 16; + r4 = r4 + -24536; + /* Next insn is delay slot */ + r31 = 0x24e98; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x24e98: + /* Next insn is delay slot */ + r31 = 0x24ea0; + pc = 0x23400; + run_23400(); + return; + case 0x24ea0: + /* Next insn is delay slot */ + pc = 0x24e44; + continue; + case 0x25000: + pc = 0x25000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_25000() throws ExecutionException { /* 0x25000 - 0x25200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x25000: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r29 = r29 + -32; + r2 = r0 + 32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r18 = r4 + r0; + r17 = r5 + r0; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x25138; + continue; + } + case 0x2502c: + r16 = 6 << 16; + r4 = r16 + -24536; + /* Next insn is delay slot */ + r31 = 0x2503c; + pc = 0x1c400; + run_1c400(); + return; + case 0x2503c: + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x250c4; + continue; + } + r4 = r16 + -24536; + r5 = r0 + 46; + /* Next insn is delay slot */ + r31 = 0x25054; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x25054: + /* Next insn is delay slot */ + r31 = 0x2505c; + pc = 0x23c00; + run_23c00(); + return; + case 0x2505c: + r17 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + r4 = r16 + -24536; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x25070; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x25070: + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x250e8; + continue; + } + case 0x25078: + r2 = 6 << 16; + r2 = readPages[(r2 + -24536) >>> 12][((r2 + -24536) >>> 2) & 0x3ff]; + r3 = r0 + 46; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x2510c; + continue; + } + r3 = r0 + 64; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x25148; + continue; + } + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r0; + r2 = r0 + r0; + case 0x250a8: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x250c4: + /* Next insn is delay slot */ + r31 = 0x250cc; + pc = 0x24e00; + run_24e00(); + return; + case 0x250cc: + r17 = r2 + r0; + r4 = r16 + -24536; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x250e0; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x250e0: + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x25078; + continue; + } + case 0x250e8: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r0; + r2 = r0 + 1; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2510c: + r2 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x25138: + /* Next insn is delay slot */ + r31 = 0x25140; + pc = 0x23400; + run_23400(); + return; + case 0x25140: + /* Next insn is delay slot */ + pc = 0x2502c; + continue; + case 0x25148: + r2 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x250a8; + continue; + case 0x25200: + pc = 0x25200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_25200() throws ExecutionException { /* 0x25200 - 0x25400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x25200: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + r16 = 6 << 16; + r4 = r16 + -24536; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2521c; + pc = 0x1c400; + run_1c400(); + return; + case 0x2521c: + /* Next insn is delay slot */ + r31 = 0x25224; + pc = 0x23c00; + run_23c00(); + return; + case 0x25224: + r4 = r16 + -24536; + r5 = r0 + r0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x25238; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x25238: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x25400: + pc = 0x25400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_25400() throws ExecutionException { /* 0x25400 - 0x25600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x25400: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + r16 = 6 << 16; + r4 = r16 + -24536; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2541c; + pc = 0x1c400; + run_1c400(); + return; + case 0x2541c: + /* Next insn is delay slot */ + r31 = 0x25424; + pc = 0x23c00; + run_23c00(); + return; + case 0x25424: + r4 = r16 + -24536; + r5 = r0 + r0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x25438; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x25438: + r4 = r16 + -24536; + r5 = r4 + r0; + /* Next insn is delay slot */ + r31 = 0x25448; + pc = 0x1d200; + run_1d200(); + return; + case 0x25448: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x25600: + pc = 0x25600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_25600() throws ExecutionException { /* 0x25600 - 0x25800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x25600: + r29 = r29 + -40; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + r16 = 6 << 16; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + r17 = r4 + r0; + r4 = r16 + -24536; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x25624; + pc = 0x1c400; + run_1c400(); + return; + case 0x25624: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x2570c; + continue; + } + case 0x25634: + r3 = r0 + 60; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x256b8; + continue; + } + r3 = r0 + 34; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r0; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x25680; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 30240; + /* Next insn is delay slot */ + r31 = 0x25664; + pc = 0x20600; + run_20600(); + return; + case 0x25664: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x25680: + r4 = r0 + 34; + /* Next insn is delay slot */ + r31 = 0x2568c; + pc = 0x24200; + run_24200(); + return; + case 0x2568c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x25664; + continue; + } + /* Next insn is delay slot */ + r31 = 0x2569c; + pc = 0x23400; + run_23400(); + return; + case 0x2569c: + r4 = r0 + r0; + case 0x256a0: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x24800; + run_24800(); + return; + case 0x256b8: + r5 = readPages[(r28 + -31300) >>> 12][((r28 + -31300) >>> 2) & 0x3ff]; + r2 = r0 + 1; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r2; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x25720; + continue; + } + r4 = r16 + -24536; + /* Next insn is delay slot */ + r31 = 0x256d8; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x256d8: + r16 = r16 + -24536; + r4 = r0 + 62; + r16 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x256ec; + pc = 0x24200; + run_24200(); + return; + case 0x256ec: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x25664; + continue; + } + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x25700; + pc = 0x23400; + run_23400(); + return; + case 0x25700: + r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x256a0; + continue; + case 0x2570c: + /* Next insn is delay slot */ + r31 = 0x25714; + pc = 0x23400; + run_23400(); + return; + case 0x25714: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x25634; + continue; + case 0x25720: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 30200; + /* Next insn is delay slot */ + r31 = 0x25734; + pc = 0x20600; + run_20600(); + return; + case 0x25734: + /* Next insn is delay slot */ + pc = 0x25664; + continue; + case 0x25800: + pc = 0x25800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_25800() throws ExecutionException { /* 0x25800 - 0x25a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x25800: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r29 = r29 + -24; + r3 = r0 + 32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x25898; + continue; + } + case 0x25818: + r3 = r0 + 60; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x258ac; + continue; + } + r3 = r0 + 34; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x25858; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 30316; + /* Next insn is delay slot */ + r31 = 0x25844; + pc = 0x20600; + run_20600(); + return; + case 0x25844: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x25858: + r4 = 6 << 16; + r4 = r4 + -24536; + /* Next insn is delay slot */ + r31 = 0x25868; + pc = 0x1c400; + run_1c400(); + return; + case 0x25868: + r4 = r0 + 34; + /* Next insn is delay slot */ + r31 = 0x25874; + pc = 0x24200; + run_24200(); + return; + case 0x25874: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x25844; + continue; + } + /* Next insn is delay slot */ + r31 = 0x25884; + pc = 0x23400; + run_23400(); + return; + case 0x25884: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = r0 + r0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x24800; + run_24800(); + return; + case 0x25898: + /* Next insn is delay slot */ + r31 = 0x258a0; + pc = 0x23400; + run_23400(); + return; + case 0x258a0: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x25818; + continue; + case 0x258ac: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 30280; + /* Next insn is delay slot */ + r31 = 0x258c0; + pc = 0x20600; + run_20600(); + return; + case 0x258c0: + /* Next insn is delay slot */ + pc = 0x25844; + continue; + case 0x25a00: + pc = 0x25a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_25a00() throws ExecutionException { /* 0x25a00 - 0x25c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x25a00: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r29 = r29 + -24; + r3 = r0 + 32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x25a60; + continue; + } + case 0x25a18: + r3 = r0 + 44; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x25a38; + continue; + } + r2 = r0 + r0; + case 0x25a28: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x25a38: + /* Next insn is delay slot */ + r31 = 0x25a40; + pc = 0x23400; + run_23400(); + return; + case 0x25a40: + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x25a74; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x25a60: + /* Next insn is delay slot */ + r31 = 0x25a68; + pc = 0x23400; + run_23400(); + return; + case 0x25a68: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x25a18; + continue; + case 0x25a74: + /* Next insn is delay slot */ + r31 = 0x25a7c; + pc = 0x23400; + run_23400(); + return; + case 0x25a7c: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x25a28; + continue; + case 0x25c00: + pc = 0x25c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_25c00() throws ExecutionException { /* 0x25c00 - 0x25e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x25c00: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r29 = r29 + -24; + r3 = r0 + 43; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x25c64; + continue; + } + r16 = r0 + r0; + case 0x25c20: + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x25c44; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r16 + r0; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x25c44: + /* Next insn is delay slot */ + r31 = 0x25c4c; + pc = 0x23400; + run_23400(); + return; + case 0x25c4c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r16 + r0; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x25c64: + /* Next insn is delay slot */ + r31 = 0x25c6c; + pc = 0x23400; + run_23400(); + return; + case 0x25c6c: + r3 = r0 + 49; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x25cb4; + continue; + } + r3 = r0 + 50; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x25ccc; + continue; + } + r3 = r0 + 51; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x25cd8; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 30352; + /* Next insn is delay slot */ + r31 = 0x25ca4; + pc = 0x20600; + run_20600(); + return; + case 0x25ca4: + r16 = r0 + r0; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x25c20; + continue; + case 0x25cb4: + r16 = r0 + 1; + case 0x25cb8: + /* Next insn is delay slot */ + r31 = 0x25cc0; + pc = 0x23400; + run_23400(); + return; + case 0x25cc0: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x25c20; + continue; + case 0x25ccc: + r16 = r0 + 2; + /* Next insn is delay slot */ + pc = 0x25cb8; + continue; + case 0x25cd8: + r16 = r0 + 4; + /* Next insn is delay slot */ + pc = 0x25cb8; + continue; + case 0x25e00: + pc = 0x25e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_25e00() throws ExecutionException { /* 0x25e00 - 0x26000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x25e00: + r29 = r29 + -24; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = r0 + 12; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x25e1c; + pc = 0x20800; + run_20800(); + return; + case 0x25e1c: + r3 = 6 << 16; + r3 = r3 + -24420; + r4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r4; + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r16; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x26000: + pc = 0x26000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_26000() throws ExecutionException { /* 0x26000 - 0x26200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x26000: + r29 = r29 + -56; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + r18 = 6 << 16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = readPages[(r18 + -24536) >>> 12][((r18 + -24536) >>> 2) & 0x3ff]; + r5 = r28 + -32688; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + /* Next insn is delay slot */ + r31 = 0x26044; + pc = 0x41e00; + run_41e00(); + return; + case 0x26044: + r30 = r2 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x26088; + continue; + } + case 0x26050: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r2 = r30 + r0; + r23 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 56; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x26088: + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x26100; + continue; + } + r19 = 6 << 16; + case 0x26094: + r4 = r19 + -24432; + /* Next insn is delay slot */ + r31 = 0x260a0; + pc = 0x1c400; + run_1c400(); + return; + case 0x260a0: + r5 = 5 << 16; + r4 = r19 + -24432; + r5 = r5 + 30372; + /* Next insn is delay slot */ + r31 = 0x260b4; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x260b4: + r5 = readPages[(r18 + -24536) >>> 12][((r18 + -24536) >>> 2) & 0x3ff]; + r4 = r19 + -24432; + /* Next insn is delay slot */ + r31 = 0x260c4; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x260c4: + r5 = 6 << 16; + r4 = r19 + -24432; + r5 = r5 + -29496; + /* Next insn is delay slot */ + r31 = 0x260d8; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x260d8: + r4 = r19 + -24432; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x260e8; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x260e8: + r5 = readPages[(r19 + -24432) >>> 12][((r19 + -24432) >>> 2) & 0x3ff]; + r4 = r0 + -2; + /* Next insn is delay slot */ + r31 = 0x260f8; + pc = 0x20600; + run_20600(); + return; + case 0x260f8: + /* Next insn is delay slot */ + pc = 0x26050; + continue; + case 0x26100: + r21 = 6 << 16; + r17 = readPages[(r21 + -24420) >>> 12][((r21 + -24420) >>> 2) & 0x3ff]; + r21 = r21 + -24420; + r19 = 6 << 16; + if (r17 == r21) { + /* Next insn is delay slot */ + pc = 0x26094; + continue; + } + r20 = r19 + -24432; + r23 = r19 + r0; + r16 = r20 + r0; + r22 = r0 + 47; + /* Next insn is delay slot */ + pc = 0x26140; + continue; + case 0x26130: + r17 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + if (r17 == r21) { + /* Next insn is delay slot */ + pc = 0x26094; + continue; + } + case 0x26140: + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x2614c; + pc = 0x1c400; + run_1c400(); + return; + case 0x2614c: + r5 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x2615c; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x2615c: + r2 = readPages[(r20 + 4) >>> 12][((r20 + 4) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2619c; + continue; + } + r4 = readPages[(r23 + -24432) >>> 12][((r23 + -24432) >>> 2) & 0x3ff]; + r2 = r4 + r2; + addr = r2 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r22) { + /* Next insn is delay slot */ + pc = 0x2619c; + continue; + } + r4 = 6 << 16; + r4 = r4 + -24432; + r5 = r0 + 47; + /* Next insn is delay slot */ + r31 = 0x2619c; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x2619c: + r5 = readPages[(r18 + -24536) >>> 12][((r18 + -24536) >>> 2) & 0x3ff]; + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x261ac; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x261ac: + r4 = r16 + r0; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x261bc; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x261bc: + r4 = readPages[(r19 + -24432) >>> 12][((r19 + -24432) >>> 2) & 0x3ff]; + r5 = r28 + -32688; + /* Next insn is delay slot */ + r31 = 0x261cc; + pc = 0x41e00; + run_41e00(); + return; + case 0x261cc: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x26130; + continue; + } + r30 = r2 + r0; + /* Next insn is delay slot */ + pc = 0x26050; + continue; + case 0x26200: + pc = 0x26200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_26200() throws ExecutionException { /* 0x26200 - 0x26400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x26200: + r29 = r29 + -40; + r5 = r0 + r0; + r4 = r29 + 16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + r16 = 6 << 16; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + /* Next insn is delay slot */ + r31 = 0x26224; + pc = 0x25000; + run_25000(); + return; + case 0x26224: + r17 = 6 << 16; + r4 = r16 + -24376; + /* Next insn is delay slot */ + r31 = 0x26234; + pc = 0x1c400; + run_1c400(); + return; + case 0x26234: + r5 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r4 = r16 + -24376; + /* Next insn is delay slot */ + r31 = 0x26244; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x26244: + r4 = r16 + -24376; + r5 = r0 + r0; + r16 = 6 << 16; + /* Next insn is delay slot */ + r31 = 0x26258; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x26258: + r4 = r16 + -24388; + /* Next insn is delay slot */ + r31 = 0x26264; + pc = 0x1c400; + run_1c400(); return; case 0x26264: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = r16 >> 16; - r25 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r25; + r5 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r4 = r16 + -24388; + /* Next insn is delay slot */ + r31 = 0x26274; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x26274: + r4 = r16 + -24388; + r5 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x26284; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x26284: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 32; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x262b0; + continue; + } + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x262b0: + /* Next insn is delay slot */ + r31 = 0x262b8; + pc = 0x23400; + run_23400(); + return; + case 0x262b8: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; return; case 0x26400: - pc=0x26400; + pc = 0x26400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_26400() throws ExecutionException { /* 0x26400 - 0x26600 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x26400: - r29 = r29 + -24; - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r16 = r4 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x2641c; + r29 = r29 + -40; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + r17 = 6 << 16; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r20 = r4 + r0; + r16 = 6 << 16; + r19 = r5 + r0; + r4 = r17 + -24388; + r5 = r0 + r0; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + r18 = r6 + r0; + /* Next insn is delay slot */ + r31 = 0x26440; + pc = 0x1ca00; + run_1ca00(); return; - case 0x2641c: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r16 >> 8; - /* Next insn is delay slot */ - pc=r2; - r31=0x2642c; + case 0x26440: + r4 = r16 + -24536; + /* Next insn is delay slot */ + r31 = 0x2644c; + pc = 0x1c400; + run_1c400(); return; - case 0x2642c: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r16 >> 16; - /* Next insn is delay slot */ - pc=r2; - r31=0x2643c; + case 0x2644c: + r5 = readPages[(r17 + -24388) >>> 12][((r17 + -24388) >>> 2) & 0x3ff]; + r4 = r16 + -24536; + /* Next insn is delay slot */ + r31 = 0x2645c; + pc = 0x1cc00; + run_1cc00(); return; - case 0x2643c: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = r16 >> 24; - r25 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r25; + case 0x2645c: + r4 = r16 + -24536; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x2646c; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x2646c: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r4 = r20 + r0; + r5 = 6 << 16; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r6 = r19 + r0; + r7 = r18 + r0; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r5 = r5 + -12488; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x39000; + run_39000(); return; case 0x26600: - pc=0x26600; + pc = 0x26600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_26600() throws ExecutionException { /* 0x26600 - 0x26800 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x26600: - r2 = 7 << 16; r29 = r29 + -32; - r3 = r2 + 16880; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r16 = readPages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff]; - r5 = r4 << 24; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - r5 = r5 >> 24; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x26674; - continue; - } - r4 = readPages[(r2+16880)>>>12][((r2+16880)>>>2)&0x3ff]; - r17 = r0 + 1; - r6 = 1 << 16; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r17; - /* Next insn is delay slot */ - r31=0x26644; - pc=0x48fec; - run_48e00(); return; - case 0x26644: - r2 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x26658; - continue; - } - writePages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff] = r17; - case 0x26658: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r16 + r0; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r17 = r4 + r0; + /* Next insn is delay slot */ + r31 = 0x2661c; + pc = 0x10268; + run_10200(); return; - case 0x26674: - r4 = 7 << 16; - r4 = r4 + -1912; - /* Next insn is delay slot */ - r31=0x26684; - pc=0x1ac00; - run_1ac00(); return; - case 0x26684: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = r0 + 1; - r2 = r16 + r0; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + case 0x2661c: + r16 = r2 + 1; + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x2662c; + pc = 0x20800; + run_20800(); + return; + case 0x2662c: + r4 = r2 + r0; + r5 = r17 + r0; + r6 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x26640; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x26640: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; case 0x26800: - pc=0x26800; + pc = 0x26800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_26800() throws ExecutionException { /* 0x26800 - 0x26a00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x26800: - r4 = readPages[(r28+-30680)>>>12][((r28+-30680)>>>2)&0x3ff]; - r29 = r29 + -32; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x2685c; - continue; - } - case 0x26814: - r6 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x26824; - pc=0x31000; - run_31000(); return; + r5 = readPages[(r28 + -32684) >>> 12][((r28 + -32684) >>> 2) & 0x3ff]; + r4 = readPages[(r28 + -31328) >>> 12][((r28 + -31328) >>> 2) & 0x3ff]; + r29 = r29 + -24; + r2 = r5 << 1; + r5 = r5 << 6; + writePages[(r28 + -32684) >>> 12][((r28 + -32684) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x26824; + pc = 0x46200; + run_46200(); + return; case 0x26824: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x26848; + writePages[(r28 + -31328) >>> 12][((r28 + -31328) >>> 2) & 0x3ff] = r2; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x26840; continue; } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - writePages[(r28+-30684)>>>12][((r28+-30684)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; return; - case 0x26848: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + case 0x26840: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29820; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); return; - case 0x2685c: - r5 = 7 << 16; - r4 = r28 + -30680; - r5 = r5 + 8880; - /* Next insn is delay slot */ - r31=0x26870; - pc=0x30e00; - run_30e00(); return; - case 0x26870: - r4 = readPages[(r28+-30680)>>>12][((r28+-30680)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x26814; - continue; case 0x26a00: - pc=0x26a00; + pc = 0x26a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_26a00() throws ExecutionException { /* 0x26a00 - 0x26c00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x26a00: - r2 = readPages[(r28+-30684)>>>12][((r28+-30684)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x26a24; + r29 = r29 + -56; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + r17 = 6 << 16; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x26a2c; + pc = 0x26200; + run_26200(); + return; + case 0x26a2c: + r4 = r17 + -24536; + r21 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x26a3c; + pc = 0x1c400; + run_1c400(); + return; + case 0x26a3c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 123; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x26b28; continue; } - r2 = r0 + 2; - writePages[(r28+-30684)>>>12][((r28+-30684)>>>2)&0x3ff] = r2; - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=r31; + r19 = 6 << 16; + r19 = r19 + -24388; + r18 = r0 + 126; + r16 = r17 + -24536; + r20 = r0 + 44; + r4 = r19 + r0; + if (r3 == r18) { + /* Next insn is delay slot */ + pc = 0x26ac8; + continue; + } + case 0x26a6c: + r5 = r0 + 118; + /* Next insn is delay slot */ + r31 = 0x26a78; + pc = 0x1ca00; + run_1ca00(); return; - case 0x26a24: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; + case 0x26a78: + /* Next insn is delay slot */ + r31 = 0x26a80; + pc = 0x24e00; + run_24e00(); return; + case 0x26a80: + /* Next insn is delay slot */ + r31 = 0x26a88; + pc = 0x25a00; + run_25a00(); + return; + case 0x26a88: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x26b04; + continue; + } + case 0x26a90: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x26c44; + run_26c00(); + return; + } + case 0x26aa4: + r2 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r4 = r3 + 1; + r3 = r2 + r3; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r4; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r20 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r4 = r19 + r0; + if (r3 != r18) { + /* Next insn is delay slot */ + pc = 0x26a6c; + continue; + } + case 0x26ac8: + r5 = r0 + 114; + /* Next insn is delay slot */ + r31 = 0x26ad4; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x26ad4: + r4 = r16 + r0; + r5 = r0 + 126; + /* Next insn is delay slot */ + r31 = 0x26ae4; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x26ae4: + /* Next insn is delay slot */ + r31 = 0x26aec; + pc = 0x23400; + run_23400(); + return; + case 0x26aec: + /* Next insn is delay slot */ + r31 = 0x26af4; + pc = 0x24e00; + run_24e00(); + return; + case 0x26af4: + /* Next insn is delay slot */ + r31 = 0x26afc; + pc = 0x25a00; + run_25a00(); + return; + case 0x26afc: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x26a90; + continue; + } + case 0x26b04: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 123; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x26b28; + continue; + } + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29836; + /* Next insn is delay slot */ + r31 = 0x26b28; + pc = 0x20600; + run_20600(); + return; + case 0x26b28: + r4 = r17 + -24536; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x26b38; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x26b38: + r4 = r17 + -24536; + /* Next insn is delay slot */ + r31 = 0x26b44; + pc = 0x1c800; + run_1c800(); + return; + case 0x26b44: + r4 = r29 + 16; + r5 = r21 + r0; + r6 = r0 + 1; + r17 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x26b5c; + pc = 0x26400; + run_26400(); + return; + case 0x26b5c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x26bc0; + continue; + } + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r16 = 5 << 16; + r18 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r4 = r0 + -1; + r5 = r16 + 30612; + /* Next insn is delay slot */ + r31 = 0x26b80; + pc = 0x20600; + run_20600(); + return; + case 0x26b80: + r3 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r4 = r0 + -3; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff]; + r5 = r16 + 30612; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r3; + r2 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + r3 = 5 << 16; + r3 = r3 + 30448; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r3; + r3 = 5 << 16; + r3 = r3 + 30460; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x26bc0; + pc = 0x20600; + run_20600(); + return; + case 0x26bc0: + r4 = r0 + 20; + /* Next insn is delay slot */ + r31 = 0x26bcc; + pc = 0x20800; + run_20800(); + return; + case 0x26bcc: + r3 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r16 = r2 + r0; + r2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x26be8; + pc = 0x26600; + run_26600(); + return; + case 0x26be8: + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + r2 = 6 << 16; + r4 = readPages[(r2 + -24376) >>> 12][((r2 + -24376) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x26bfc; + pc = 0x26600; + run_26600(); + return; + case 0x26bfc: + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; case 0x26c00: - pc=0x26c00; + pc = 0x26c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_26c00() throws ExecutionException { /* 0x26c00 - 0x26e00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x26c00: - r2 = readPages[(r28+-30848)>>>12][((r28+-30848)>>>2)&0x3ff]; - r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x26c38; - continue; - } - r4 = 7 << 16; - r4 = r4 + -1884; - /* Next insn is delay slot */ - r31=0x26c24; - pc=0x1ac00; - run_1ac00(); return; - case 0x26c24: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r17; + r4 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x26c10; + pc = 0x24a00; + run_24a00(); + return; + case 0x26c10: + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r16; + r20 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r29 = r29 + 56; + /* Next insn is delay slot */ + pc = r31; return; - case 0x26c38: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x26c44; - pc=0x17a00; - run_17a00(); return; case 0x26c44: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30848)>>>12][((r28+-30848)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x26c50; + pc = 0x1c600; + run_1c600(); + return; + case 0x26c50: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x26aa4; + run_26a00(); return; case 0x26e00: - pc=0x26e00; + pc = 0x26e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_26e00() throws ExecutionException { /* 0x26e00 - 0x27000 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x26e00: - r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - r17 = r4 + r0; - r4 = 1 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r16 = 7 << 16; - /* Next insn is delay slot */ - r31=0x26e24; - pc=0x1b400; - run_1b400(); return; - case 0x26e24: - r3 = r0 + 256; - writePages[(r16+16880)>>>12][((r16+16880)>>>2)&0x3ff] = r2; - if(r17 == r3) { - /* Next insn is delay slot */ - pc=0x26e80; + r2 = readPages[(r28 + -31328) >>> 12][((r28 + -31328) >>> 2) & 0x3ff]; + r29 = r29 + -112; + writePages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 104) >>> 12][((r29 + 104) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 96) >>> 12][((r29 + 96) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r16; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x27204; + run_27200(); + return; + } + case 0x26e38: + r2 = readPages[(r28 + -32764) >>> 12][((r28 + -32764) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r28 + -32764) >>> 12][((r28 + -32764) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x271c4; + run_27000(); + return; + } + case 0x26e50: + /* Next insn is delay slot */ + r31 = 0x26e58; + pc = 0x26200; + run_26200(); + return; + case 0x26e58: + r20 = r2 + r0; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x26f4c; continue; } - r5 = r17 << 24; - r5 = r5 >> 24; - r3 = r0 + 1; - case 0x26e40: - r16 = r16 + 16880; - r4 = r2 + r0; - r6 = 1 << 16; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x26e58; - pc=0x48fec; - run_48e00(); return; - case 0x26e58: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = 7 << 16; - r2 = r2 + 16912; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - writePages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff] = r2; - writePages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff] = r2; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x26e80: - r5 = r0 + r0; - r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x26e40; + r18 = 6 << 16; + r17 = r0 + r0; + r16 = r0 + r0; + r19 = r0 + 126; + r18 = r18 + -24388; + /* Next insn is delay slot */ + pc = 0x26ecc; continue; - case 0x27000: - pc=0x27000; + case 0x26e88: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r4 = r18 + r0; + if (r3 == r19) { + /* Next insn is delay slot */ + pc = 0x26ef8; + continue; + } + case 0x26e98: + r5 = r0 + 118; + /* Next insn is delay slot */ + r31 = 0x26ea4; + pc = 0x1ca00; + run_1ca00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x26ea4: + r4 = readPages[(r28 + -31328) >>> 12][((r28 + -31328) >>> 2) & 0x3ff]; + r16 = r16 + 1; + r4 = r4 + r17; + /* Next insn is delay slot */ + r31 = 0x26eb8; + pc = 0x1ae00; + run_1ae00(); + return; + case 0x26eb8: + /* Next insn is delay slot */ + r31 = 0x26ec0; + pc = 0x25a00; + run_25a00(); + return; + case 0x26ec0: + r17 = r17 + 32; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x26f4c; + continue; + } + case 0x26ecc: + r3 = readPages[(r28 + -32684) >>> 12][((r28 + -32684) >>> 2) & 0x3ff]; + r3 = r16 < r3 ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x26e88; + continue; + } + /* Next insn is delay slot */ + r31 = 0x26ee8; + pc = 0x26800; + run_26800(); + return; + case 0x26ee8: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r4 = r18 + r0; + if (r3 != r19) { + /* Next insn is delay slot */ + pc = 0x26e98; + continue; + } + case 0x26ef8: + r5 = r0 + 114; + /* Next insn is delay slot */ + r31 = 0x26f04; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x26f04: + /* Next insn is delay slot */ + r31 = 0x26f0c; + pc = 0x23400; + run_23400(); + return; + case 0x26f0c: + r5 = r0 + r0; + r4 = r29 + 56; + /* Next insn is delay slot */ + r31 = 0x26f1c; + pc = 0x25000; + run_25000(); + return; + case 0x26f1c: + r21 = readPages[(r28 + -31328) >>> 12][((r28 + -31328) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r21 = r21 + r17; + /* Next insn is delay slot */ + r31 = 0x26f30; + pc = 0x37800; + run_37800(); + return; + case 0x26f30: + writePages[(r21 + 0) >>> 12][((r21 + 0) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x26f3c; + pc = 0x25a00; + run_25a00(); + return; + case 0x26f3c: + r16 = r16 + 1; + r17 = r17 + 32; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x26ecc; + continue; + } + case 0x26f4c: + r4 = r29 + 64; + r5 = r20 + r0; + r6 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x26f60; + pc = 0x26400; + run_26400(); + return; + case 0x26f60: + r2 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x271e0; + run_27000(); + return; + } + r17 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r19 = 6 << 16; + r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r18 = r19 + -10328; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + r23 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + r21 = readPages[(r18 + 12) >>> 12][((r18 + 12) >>> 2) & 0x3ff]; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; + r2 = r29 + 16; + r6 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + writePages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff] = r2; + r5 = 5 << 16; + r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + r5 = r5 + 30556; + r7 = r0 + r0; + r4 = r29 + 36; + r21 = r21 + r2; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r22 = tmp; + r30 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x26fdc; + pc = 0x36600; + run_36600(); + return; + case 0x26fdc: + r4 = r29 + 36; + /* Next insn is delay slot */ + r31 = 0x26fe8; + pc = 0x36800; + run_36800(); + return; + case 0x26fe8: + /* Next insn is delay slot */ + r31 = 0x26ff0; + pc = 0x23400; + run_23400(); + return; + case 0x26ff0: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x270e0; + run_27000(); + return; + } + case 0x27000: + pc = 0x27000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_27000() throws ExecutionException { /* 0x27000 - 0x27200 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x27000: - r29 = r29 + -56; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; - r19 = 7 << 16; - r2 = r19 + 16880; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; - r18 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r17 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; - r2 = r18 < r17 ? 1 : 0; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r21; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r20; - r16 = r4 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2711c; - continue; - } - r18 = r18 - r17; - r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; - r18 = r18 + 1; - r21 = r17 + r0; - r20 = r18 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x27138; + r20 = 6 << 16; + r16 = r0 + r0; + r20 = r20 + -11392; + /* Next insn is delay slot */ + pc = 0x27060; + continue; + case 0x27014: + r5 = r0 + r0; + r4 = r29 + 56; + /* Next insn is delay slot */ + r31 = 0x27024; + pc = 0x25000; + run_25000(); + return; + case 0x27024: + r4 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x27030; + pc = 0x37800; + run_37800(); + return; + case 0x27030: + r5 = readPages[(r28 + -31328) >>> 12][((r28 + -31328) >>> 2) & 0x3ff]; + r4 = r2 + r0; + r5 = r5 + r16; + r6 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x27048; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x27048: + /* Next insn is delay slot */ + r31 = 0x27050; + pc = 0x25a00; + run_25a00(); + return; + case 0x27050: + r16 = r16 + 32; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x270e0; continue; } case 0x2705c: - r2 = readPages[(r28+-30684)>>>12][((r28+-30684)>>>2)&0x3ff]; - r3 = r0 + 1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2716c; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + case 0x27060: + r2 = r0 + 126; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x27014; continue; } - case 0x2706c: - r3 = r0 + 2; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x270e0; + /* Next insn is delay slot */ + r31 = 0x27074; + pc = 0x23400; + run_23400(); + return; + case 0x27074: + r4 = r29 + 56; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x27084; + pc = 0x25000; + run_25000(); + return; + case 0x27084: + r6 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r4 = r29 + 60; + r5 = r20 + r0; + r7 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x2709c; + pc = 0x39000; + run_39000(); + return; + case 0x2709c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x270b4; continue; } - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x273dc; - run_27200(); return; + r2 = readPages[(r19 + -10328) >>> 12][((r19 + -10328) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x271a8; + continue; } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - case 0x270a4: - r2 = r2 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - case 0x270ac: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x27394; - run_27200(); return; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r17 = r17 >> 8; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + case 0x270b4: + r2 = readPages[(r28 + -31328) >>> 12][((r28 + -31328) >>> 2) & 0x3ff]; + r2 = r2 + r16; + r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r16 = r16 + 32; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x270d8; + pc = 0x25a00; + run_25a00(); + return; case 0x270d8: - r2 = r2 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2705c; + continue; + } case 0x270e0: - r4 = readPages[(r19+16880)>>>12][((r19+16880)>>>2)&0x3ff]; - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r3 = r0 + 1; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x27100; + pc = 0x21000; + run_21000(); + return; + case 0x27100: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r5 = tmp; + r2 = r0 + 125; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x27120; + continue; + } + r4 = 5 << 16; + r4 = r4 + 28612; + /* Next insn is delay slot */ + r31 = 0x27120; + pc = 0x21a00; + run_21a00(); + return; + case 0x27120: + r4 = r29 + 36; + /* Next insn is delay slot */ + r31 = 0x2712c; + pc = 0x36a00; + run_36a00(); + return; + case 0x2712c: + r3 = readPages[(r18 + 12) >>> 12][((r18 + 12) >>> 2) & 0x3ff]; + r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + writePages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff] = r30; + r2 = r3 + r2; + writePages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff] = r23; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r22 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 == r21) { + /* Next insn is delay slot */ + pc = 0x27160; + continue; + } + r5 = 5 << 16; + r4 = r0 + -1; + r5 = r5 + 30588; + /* Next insn is delay slot */ + r31 = 0x27160; + pc = 0x20600; + run_20600(); + return; + case 0x27160: + /* Next insn is delay slot */ + r31 = 0x27168; + pc = 0x24000; + run_24000(); + return; + case 0x27168: + r2 = readPages[(r28 + -32764) >>> 12][((r28 + -32764) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff]; + r2 = r2 + 1; + r30 = readPages[(r29 + 104) >>> 12][((r29 + 104) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 96) >>> 12][((r29 + 96) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + writePages[(r28 + -32764) >>> 12][((r28 + -32764) >>> 2) & 0x3ff] = r2; + r29 = r29 + 112; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x271a8: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 30564; + /* Next insn is delay slot */ + r31 = 0x271bc; + pc = 0x20600; + run_20600(); + return; + case 0x271bc: + /* Next insn is delay slot */ + pc = 0x270b4; + continue; + case 0x271c4: + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 30472; + /* Next insn is delay slot */ + r31 = 0x271d8; + pc = 0x20600; + run_20600(); + return; + case 0x271d8: + /* Next insn is delay slot */ + pc = 0x26e50; + run_26e00(); + return; + case 0x271e0: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 30516; + /* Next insn is delay slot */ + r31 = 0x271f4; + pc = 0x20600; + run_20600(); + return; + case 0x271f4: + /* Next insn is delay slot */ + r31 = 0x271fc; + pc = 0x23e00; + run_23e00(); + return; + case 0x271fc: + /* Next insn is delay slot */ + pc = 0x27168; + continue; + case 0x27200: + pc = 0x27200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_27200() throws ExecutionException { /* 0x27200 - 0x27400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x27200: + case 0x27204: + /* Next insn is delay slot */ + r31 = 0x2720c; + pc = 0x26800; + run_26800(); + return; + case 0x2720c: + /* Next insn is delay slot */ + pc = 0x26e38; + run_26e00(); + return; + case 0x27400: + pc = 0x27400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_27400() throws ExecutionException { /* 0x27400 - 0x27600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x27400: + r29 = r29 + -32; + r2 = r0 + 256; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + r16 = r5 + r0; + if (r6 == r2) { + /* Next insn is delay slot */ + pc = 0x2750c; + continue; + } + r2 = (r6 & 0xffffffffL) < (257 & 0xffffffffL) ? 1 : 0; + r17 = r4 + r0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x274e0; + continue; + } + r2 = r0 + 512; + if (r6 == r2) { + /* Next insn is delay slot */ + pc = 0x274a0; + continue; + } + r2 = r0 + 768; + if (r6 != r2) { + /* Next insn is delay slot */ + pc = 0x274e8; + continue; + } + r2 = 6 << 16; + r3 = r2 + -10224; + r3 = readPages[(r3 + 40) >>> 12][((r3 + 40) >>> 2) & 0x3ff]; + case 0x27454: + r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2 = r2 & 2; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x274c4; + continue; + } + case 0x27470: + r2 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x27528; + continue; + } + case 0x27480: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r16 << 8; + r2 = r2 | r16; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x274a0: + r2 = 6 << 16; + r3 = r2 + -10224; + r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; + r3 = readPages[(r3 + 36) >>> 12][((r3 + 36) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2 = r2 & 2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x27470; + continue; + } + case 0x274c4: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r16 + r0; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x274e0: + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x274c4; + continue; + } + case 0x274e8: + r4 = 5 << 16; + r4 = r4 + 30636; + r5 = r6 + r0; + /* Next insn is delay slot */ + r31 = 0x274fc; + pc = 0x21a00; + run_21a00(); + return; + case 0x274fc: + r3 = r0 + r0; + r2 = 6 << 16; + /* Next insn is delay slot */ + pc = 0x27454; + continue; + case 0x2750c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r5 << 8; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27528: + r3 = (r3 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + r2 = r0 + 2; + r3 = r2 - r3; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x27480; + continue; + case 0x27600: + pc = 0x27600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_27600() throws ExecutionException { /* 0x27600 - 0x27800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x27600: + r29 = r29 + -80; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r16; + r17 = r5 + r0; + r16 = r4 + r0; + r5 = r0 + r0; + r4 = r29 + 16; + writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x27628; + pc = 0x1ac00; + run_1ac00(); + return; + case 0x27628: + r2 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x27640; + continue; + } + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x2766c; + continue; + } + case 0x27640: + r4 = r16 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + /* Next insn is delay slot */ + r31 = 0x27654; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x27654: + r31 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r29 = r29 + 80; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2766c: + r4 = 5 << 16; + r4 = r4 + 30660; + /* Next insn is delay slot */ + r31 = 0x2767c; + pc = 0x21800; + run_21800(); + return; + case 0x2767c: + r4 = r16 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + /* Next insn is delay slot */ + r31 = 0x27690; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x27690: + r31 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r29 = r29 + 80; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27800: + pc = 0x27800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_27800() throws ExecutionException { /* 0x27800 - 0x27a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x27800: + r29 = r29 + -136; + writePages[(r29 + 128) >>> 12][((r29 + 128) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = r29 + 104; + writePages[(r29 + 132) >>> 12][((r29 + 132) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2781c; + pc = 0x2ce00; + run_2ce00(); + return; + case 0x2781c: + r4 = r29 + 80; + r5 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x2782c; + pc = 0x27600; + run_27600(); + return; + case 0x2782c: + r4 = r29 + 80; + /* Next insn is delay slot */ + r31 = 0x27838; + pc = 0x39600; + run_39600(); + return; + case 0x27838: + r2 = readPages[(r29 + 104) >>> 12][((r29 + 104) >>> 2) & 0x3ff]; + r3 = r0 + 1; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x27878; + continue; + } + case 0x27848: + r16 = r0 + r0; + case 0x2784c: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r16 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x2785c; + return; + case 0x2785c: + /* Next insn is delay slot */ + r31 = 0x27864; + pc = 0x24000; + run_24000(); + return; + case 0x27864: + r31 = readPages[(r29 + 132) >>> 12][((r29 + 132) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 128) >>> 12][((r29 + 128) >>> 2) & 0x3ff]; + r29 = r29 + 136; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27878: + r3 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x27848; + continue; + } + r6 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r2 = r0 | 65535; + r3 = r6 | 65535; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x2790c; + continue; + } + r2 = readPages[(r29 + 112) >>> 12][((r29 + 112) >>> 2) & 0x3ff]; + r16 = r16 + r2; + r6 = r6 - r16; + r16 = r6 & 65535; + r6 = r6 & 32768; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x2793c; + continue; + } + case 0x278bc: + r2 = r16 + 128; + r2 = (r2 & 0xffffffffL) < (256 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2784c; + continue; + } + r2 = r16 < -128 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2794c; + continue; + } + r7 = r16 + -127; + case 0x278dc: + r5 = 5 << 16; + r4 = r29 + 16; + r5 = r5 + 30776; + r6 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x278f4; + pc = 0x47400; + run_47400(); + return; + case 0x278f4: + r4 = r0 + -2; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x27904; + pc = 0x20600; + run_20600(); + return; + case 0x27904: + /* Next insn is delay slot */ + pc = 0x2784c; + continue; + case 0x2790c: + r5 = 5 << 16; + r4 = r29 + 16; + r5 = r5 + 30748; + /* Next insn is delay slot */ + r31 = 0x27920; + pc = 0x47400; + run_47400(); + return; + case 0x27920: + r4 = r0 + -2; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x27930; + pc = 0x20600; + run_20600(); + return; + case 0x27930: + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x2784c; + continue; + case 0x2793c: + r2 = 65535 << 16; + r16 = r16 + r2; + /* Next insn is delay slot */ + pc = 0x278bc; + continue; + case 0x2794c: + r7 = r0 + -128; + r7 = r7 - r16; + /* Next insn is delay slot */ + pc = 0x278dc; + continue; + case 0x27a00: + pc = 0x27a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_27a00() throws ExecutionException { /* 0x27a00 - 0x27c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x27a00: + r2 = r0 + 1; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x27a14; + continue; + } + case 0x27a0c: + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27a14: + r3 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + r2 = r0 + 255; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x27a0c; + continue; + } + r2 = 6 << 16; + r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2 = r2 & 32; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x27a0c; + continue; + } + r5 = 5 << 16; + r4 = r0 + -1; + r5 = r5 + 30816; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x27c00: + pc = 0x27c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_27c00() throws ExecutionException { /* 0x27c00 - 0x27e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x27c00: + r29 = r29 + -24; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x27c10; + pc = 0x25a00; + run_25a00(); + return; + case 0x27c10: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x27c6c; + continue; + } + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + r2 = r2 + -83; + r2 = r2 & 255; + r3 = (r2 & 0xffffffffL) < (40 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x27d18; + continue; + } + r3 = 5 << 16; + r2 = r2 << 2; + r3 = r3 + 32248; + r2 = r3 + r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + return; + case 0x27c54: + /* Next insn is delay slot */ + r31 = 0x27c5c; + pc = 0x23400; + run_23400(); + return; + case 0x27c5c: + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x27d40; + continue; + } + r2 = r0 + 4; + case 0x27c6c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27c7c: + /* Next insn is delay slot */ + r31 = 0x27c84; + pc = 0x23400; + run_23400(); + return; + case 0x27c84: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r4 = r0 + -33; + r4 = r2 & r4; + r3 = r0 + 80; + if (r4 != r3) { + /* Next insn is delay slot */ + pc = 0x27ca8; + continue; + } + /* Next insn is delay slot */ + r31 = 0x27ca4; + pc = 0x23400; + run_23400(); + return; + case 0x27ca4: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + case 0x27ca8: + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x27d54; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27cc8: + /* Next insn is delay slot */ + r31 = 0x27cd0; + pc = 0x23400; + run_23400(); + return; + case 0x27cd0: + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x27d7c; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 2; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27cf0: + /* Next insn is delay slot */ + r31 = 0x27cf8; + pc = 0x23400; + run_23400(); + return; + case 0x27cf8: + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x27d68; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 3; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27d18: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x27d2c; + pc = 0x20600; + run_20600(); + return; + case 0x27d2c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27d40: + /* Next insn is delay slot */ + r31 = 0x27d48; + pc = 0x23400; + run_23400(); + return; + case 0x27d48: + r2 = r0 + 4; + /* Next insn is delay slot */ + pc = 0x27c6c; + continue; + case 0x27d54: + /* Next insn is delay slot */ + r31 = 0x27d5c; + pc = 0x23400; + run_23400(); + return; + case 0x27d5c: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x27c6c; + continue; + case 0x27d68: + /* Next insn is delay slot */ + r31 = 0x27d70; + pc = 0x23400; + run_23400(); + return; + case 0x27d70: + r2 = r0 + 3; + /* Next insn is delay slot */ + pc = 0x27c6c; + continue; + case 0x27d7c: + /* Next insn is delay slot */ + r31 = 0x27d84; + pc = 0x23400; + run_23400(); + return; + case 0x27d84: + r2 = r0 + 2; + /* Next insn is delay slot */ + pc = 0x27c6c; + continue; + case 0x27e00: + pc = 0x27e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_27e00() throws ExecutionException { /* 0x27e00 - 0x28000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x27e00: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r29 = r29 + -72; + r3 = r0 + 32; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x27fec; + continue; + } + case 0x27e20: + r3 = r0 + 35; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x27f48; + continue; + } + r3 = r0 + 91; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x27edc; + continue; + } + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x27eb8; + continue; + } + r4 = r29 + 16; + r5 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x27e50; + pc = 0x1ac00; + run_1ac00(); + return; + case 0x27e50: + r4 = r16 + r0; + r5 = r29 + 24; + r6 = r0 + 24; + /* Next insn is delay slot */ + r31 = 0x27e64; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x27e64: + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x27e70; + pc = 0x39600; + run_39600(); + return; + case 0x27e70: + r16 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r16 = ((r0 & 0xffffffffL) < (r16 & 0xffffffffL)) ? 1 : 0; + r16 = r16 << 2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x27f90; + continue; + } + case 0x27e88: + /* Next insn is delay slot */ + r31 = 0x27e90; + pc = 0x27c00; + run_27c00(); + return; + case 0x27e90: + r2 = r2 << 7; + r16 = r2 | r16; + case 0x27e98: + /* Next insn is delay slot */ + r31 = 0x27ea0; + pc = 0x24000; + run_24000(); + return; + case 0x27ea0: + r31 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r2 = r16 + r0; + r16 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r29 = r29 + 72; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27eb8: + /* Next insn is delay slot */ + r31 = 0x27ec0; + pc = 0x24000; + run_24000(); + return; + case 0x27ec0: + r31 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r16 = r0 + 1; + r2 = r16 + r0; + r16 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r29 = r29 + 72; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27edc: + /* Next insn is delay slot */ + r31 = 0x27ee4; + pc = 0x23400; + run_23400(); + return; + case 0x27ee4: + r4 = r16 + r0; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x27ef4; + pc = 0x27600; + run_27600(); + return; + case 0x27ef4: + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x27f00; + pc = 0x39600; + run_39600(); + return; + case 0x27f00: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 93; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x27fcc; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x27f24; + pc = 0x20600; + run_20600(); + return; + case 0x27f24: + /* Next insn is delay slot */ + r31 = 0x27f2c; + pc = 0x24000; + run_24000(); + return; + case 0x27f2c: + r31 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r16 = r0 + r0; + r2 = r16 + r0; + r16 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r29 = r29 + 72; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27f48: + /* Next insn is delay slot */ + r31 = 0x27f50; + pc = 0x23400; + run_23400(); + return; + case 0x27f50: + r4 = r16 + r0; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x27f60; + pc = 0x27600; + run_27600(); + return; + case 0x27f60: + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x27f6c; + pc = 0x39400; + run_39400(); + return; + case 0x27f6c: + /* Next insn is delay slot */ + r31 = 0x27f74; + pc = 0x24000; + run_24000(); + return; + case 0x27f74: + r31 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r16 = r0 + 2; + r2 = r16 + r0; + r16 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r29 = r29 + 72; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x27f90: + /* Next insn is delay slot */ + r31 = 0x27f98; + pc = 0x27c00; + run_27c00(); + return; + case 0x27f98: + r2 = r2 << 4; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r16 = r16 | r2; + r2 = r0 + 41; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x28000; + run_28000(); + return; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x27fc4; + pc = 0x20600; + run_20600(); + return; + case 0x27fc4: + /* Next insn is delay slot */ + pc = 0x27e88; + continue; + case 0x27fcc: + /* Next insn is delay slot */ + r31 = 0x27fd4; + pc = 0x23400; + run_23400(); + return; + case 0x27fd4: + /* Next insn is delay slot */ + r31 = 0x27fdc; + pc = 0x27c00; + run_27c00(); + return; + case 0x27fdc: + r2 = r2 << 7; + r16 = r2 | 8; + /* Next insn is delay slot */ + pc = 0x27e98; + continue; + case 0x27fec: + /* Next insn is delay slot */ + r31 = 0x27ff4; + pc = 0x23400; + run_23400(); + return; + case 0x27ff4: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x27e20; + continue; + case 0x28000: + pc = 0x28000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_28000() throws ExecutionException { /* 0x28000 - 0x28200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x28000: + /* Next insn is delay slot */ + r31 = 0x28008; + pc = 0x23400; + run_23400(); + return; + case 0x28008: + /* Next insn is delay slot */ + pc = 0x27e88; + run_27e00(); + return; + case 0x28200: + pc = 0x28200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_28200() throws ExecutionException { /* 0x28200 - 0x28400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x28200: + r29 = r29 + -136; + writePages[(r29 + 128) >>> 12][((r29 + 128) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = r29 + 104; + writePages[(r29 + 132) >>> 12][((r29 + 132) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2821c; + pc = 0x2ce00; + run_2ce00(); + return; + case 0x2821c: + r4 = r29 + 80; + r5 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x2822c; + pc = 0x27600; + run_27600(); + return; + case 0x2822c: + r4 = r29 + 80; + /* Next insn is delay slot */ + r31 = 0x28238; + pc = 0x39600; + run_39600(); + return; + case 0x28238: + r2 = readPages[(r29 + 104) >>> 12][((r29 + 104) >>> 2) & 0x3ff]; + r3 = r0 + 1; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x28270; + continue; + } + case 0x28248: + r4 = r0 + r0; + case 0x2824c: + /* Next insn is delay slot */ + r31 = 0x28254; + pc = 0x22400; + run_22400(); + return; + case 0x28254: + /* Next insn is delay slot */ + r31 = 0x2825c; + pc = 0x24000; + run_24000(); + return; + case 0x2825c: + r31 = readPages[(r29 + 132) >>> 12][((r29 + 132) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 128) >>> 12][((r29 + 128) >>> 2) & 0x3ff]; + r29 = r29 + 136; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x28270: + r3 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x28248; + continue; + } + r6 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r2 = r0 | 65535; + r3 = r6 | 65535; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x282b0; + continue; + } + r4 = readPages[(r29 + 112) >>> 12][((r29 + 112) >>> 2) & 0x3ff]; + r4 = r16 + r4; + r4 = r6 - r4; + r4 = r4 & 65535; + /* Next insn is delay slot */ + pc = 0x2824c; + continue; + case 0x282b0: + r5 = 5 << 16; + r4 = r29 + 16; + r5 = r5 + 30748; + /* Next insn is delay slot */ + r31 = 0x282c4; + pc = 0x47400; + run_47400(); + return; + case 0x282c4: + r4 = r0 + -2; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x282d4; + pc = 0x20600; + run_20600(); + return; + case 0x282d4: + r4 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x2824c; + continue; + case 0x28400: + pc = 0x28400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_28400() throws ExecutionException { /* 0x28400 - 0x28600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x28400: + r29 = r29 + -32; + r3 = r6 & 255; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + r16 = r5 + r0; + r5 = r6 & 65280; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r2 = ((r0 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x28428; + continue; + } + r2 = r2 | 2; + case 0x28428: + r5 = 255 << 16; + r5 = r6 & r5; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x2843c; + continue; + } + r2 = r2 | 4; + case 0x2843c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x285d0; + continue; + } + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x2849c; + continue; + } + r2 = r2 & r4; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x286a8; + run_28600(); + return; + } + case 0x28458: + r2 = r0 + 2; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x285a4; + continue; + } + r2 = r0 + 4; + if (r4 != r2) { + /* Next insn is delay slot */ + pc = 0x28638; + run_28600(); + return; + } + case 0x28470: + r4 = r6 >>> 16; + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r4 & 255; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x28484; + return; + case 0x28484: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x22800; + run_22800(); + return; + case 0x2849c: + r4 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r5 = r4 & 7; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x285f0; + continue; + } + r5 = r2 + -1; + r5 = (r5 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x286ec; + run_28600(); + return; + } + r5 = r0 + 4; + if (r2 == r5) { + /* Next insn is delay slot */ + pc = 0x28470; + continue; + } + r5 = r4 & 16; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x28658; + run_28600(); + return; + } + r5 = r2 & 1; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x284f0; + continue; + } + r4 = r4 & 8; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x28680; + run_28600(); + return; + } + case 0x284f0: + r4 = r2 & 2; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x2855c; + continue; + } + r2 = r2 & 4; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x28680; + run_28600(); + return; + } + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x28470; + continue; + } + r3 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r2 = r0 | 32768; + r3 = r3 + r2; + r2 = 1 << 16; + r2 = r2 | 32768; + r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x28470; + continue; + } + r5 = 5 << 16; + r4 = r0 + -1; + r5 = r5 + 32452; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + r31 = 0x28550; + pc = 0x20600; + run_20600(); + return; + case 0x28550: + r6 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x28470; + continue; + case 0x2855c: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x285a4; + continue; + } + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r2 = r2 + 128; + r2 = (r2 & 0xffffffffL) < (384 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x285a4; + continue; + } + r5 = 5 << 16; + r4 = r0 + -1; + r5 = r5 + 32452; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + r31 = 0x2859c; + pc = 0x20600; + run_20600(); + return; + case 0x2859c: + r6 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + case 0x285a4: + r4 = r6 >>> 8; + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r4 & 255; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x285b8; + return; + case 0x285b8: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x22400; + run_22400(); + return; + case 0x285d0: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 32488; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x285f0: + r4 = r2 & r4; + r5 = r4 & 1; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x28680; + run_28600(); + return; + } + case 0x28600: + pc = 0x28600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_28600() throws ExecutionException { /* 0x28600 - 0x28800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x28600: + r4 = r4 & 2; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x285a4; + run_28400(); + return; + } + case 0x2860c: + r2 = r2 & 4; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x28470; + run_28400(); + return; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29760; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x28638: + r2 = r0 + 1; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x28680; + continue; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x28658: + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r4 < 0) { + /* Next insn is delay slot */ + pc = 0x286f8; + continue; + } + r5 = r2 & 1; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x286c8; + continue; + } + r5 = r4 < 256 ? 1 : 0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x286c8; + continue; + } + case 0x28680: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r3 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x28690; + return; + case 0x28690: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x22000; + run_22000(); + return; + case 0x286a8: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 30864; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x286c8: + r3 = r2 & 2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x2860c; + continue; + } + r3 = 1 << 16; + r4 = r4 < r3 ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x285a4; + run_28400(); + return; + } + /* Next insn is delay slot */ + pc = 0x2860c; + continue; + case 0x286ec: + r4 = r2 + r0; + /* Next insn is delay slot */ + pc = 0x28458; + run_28400(); + return; + case 0x286f8: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 30920; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x28800: + pc = 0x28800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_28800() throws ExecutionException { /* 0x28800 - 0x28a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x28800: + r29 = r29 + -168; + r6 = 6 << 16; + r5 = r29 + 144; + r6 = r6 + -19104; + writePages[(r29 + 164) >>> 12][((r29 + 164) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 160) >>> 12][((r29 + 160) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 156) >>> 12][((r29 + 156) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x28824; + pc = 0x38c00; + run_38c00(); + return; + case 0x28824: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x28878; + continue; + } + r16 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; + r2 = r16 & 1024; + r17 = r16 & 255; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x28894; + continue; + } + r2 = r16 + r0; + case 0x28848: + r2 = r2 >> 12; + r3 = (r2 & 0xffffffffL) < (11 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x28c90; + run_28c00(); + return; + } + r3 = 5 << 16; + r2 = r2 << 2; + r3 = r3 + 32408; + r2 = r3 + r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + return; + case 0x28878: + r2 = r0 + r0; + case 0x2887c: + r31 = readPages[(r29 + 164) >>> 12][((r29 + 164) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 160) >>> 12][((r29 + 160) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 156) >>> 12][((r29 + 156) >>> 2) & 0x3ff]; + r29 = r29 + 168; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x28894: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r0 + 66; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x288a4; + return; + case 0x288a4: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r0 + 66; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x288b4; + return; + case 0x288b4: + r2 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x28848; + continue; + case 0x288c0: + r5 = r0 + 1; + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x288d0; + pc = 0x27600; + run_27600(); + return; + case 0x288d0: + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x288dc; + pc = 0x39600; + run_39600(); + return; + case 0x288dc: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r17 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x288ec; + return; + case 0x288ec: + r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x288f8; + pc = 0x22000; + run_22000(); + return; + case 0x288f8: + /* Next insn is delay slot */ + r31 = 0x28900; + pc = 0x24000; + run_24000(); + return; + case 0x28900: + r2 = r0 + 1; + case 0x28904: + r31 = readPages[(r29 + 164) >>> 12][((r29 + 164) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 160) >>> 12][((r29 + 160) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 156) >>> 12][((r29 + 156) >>> 2) & 0x3ff]; + r29 = r29 + 168; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2891c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x28e54; + run_28e00(); + return; + } + case 0x2892c: + r3 = r0 + 35; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x28e68; + run_28e00(); + return; + } + r16 = r0 + r0; + case 0x2893c: + r4 = r29 + 120; + r5 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x2894c; + pc = 0x27600; + run_27600(); + return; + case 0x2894c: + r4 = r29 + 120; + /* Next insn is delay slot */ + r31 = 0x28958; + pc = 0x39400; + run_39400(); + return; + case 0x28958: + /* Next insn is delay slot */ + r31 = 0x28960; + pc = 0x25a00; + run_25a00(); + return; + case 0x28960: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x28f94; + run_28e00(); + return; + } + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 35; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x29098; + run_29000(); + return; + } + case 0x28978: + r5 = r0 + 1; + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x28988; + pc = 0x27600; + run_27600(); + return; + case 0x28988: + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x28994; + pc = 0x39400; + run_39400(); + return; + case 0x28994: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r17 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x289a4; + return; + case 0x289a4: + r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x289b0; + pc = 0x22000; + run_22000(); + return; + case 0x289b0: + r4 = readPages[(r29 + 128) >>> 12][((r29 + 128) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x289bc; + pc = 0x22000; + run_22000(); + return; + case 0x289bc: + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x288f8; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x289d8; + pc = 0x20600; + run_20600(); + return; + case 0x289d8: + /* Next insn is delay slot */ + r31 = 0x289e0; + pc = 0x24000; + run_24000(); + return; + case 0x289e0: + /* Next insn is delay slot */ + pc = 0x28900; + continue; + case 0x289e8: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r17 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x289f8; + return; + case 0x289f8: + r4 = r0 + 3; + /* Next insn is delay slot */ + r31 = 0x28a04; + pc = 0x28200; + run_28200(); + return; + case 0x28a00: + pc = 0x28a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_28a00() throws ExecutionException { /* 0x28a00 - 0x28c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x28a00: + case 0x28a04: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x2887c; + run_28800(); + return; + case 0x28a10: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r17 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x28a20; + return; + case 0x28a20: + r4 = r0 + 2; + /* Next insn is delay slot */ + r31 = 0x28a2c; + pc = 0x28200; + run_28200(); + return; + case 0x28a2c: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x2887c; + run_28800(); + return; + case 0x28a38: + r4 = r29 + 16; + r5 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x28a48; + pc = 0x27600; + run_27600(); + return; + case 0x28a48: + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x28a54; + pc = 0x39600; + run_39600(); + return; + case 0x28a54: + /* Next insn is delay slot */ + r31 = 0x28a5c; + pc = 0x25a00; + run_25a00(); + return; + case 0x28a5c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x28cb0; + run_28c00(); + return; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x28a78; + pc = 0x20600; + run_20600(); + return; + case 0x28a78: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x28a84: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r17 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x28a94; + return; + case 0x28a94: + r4 = r0 + 2; + /* Next insn is delay slot */ + r31 = 0x28aa0; + pc = 0x27800; + run_27800(); + return; + case 0x28aa0: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x2887c; + run_28800(); + return; + case 0x28aac: + r2 = r0 + 248; + if (r17 == r2) { + /* Next insn is delay slot */ + pc = 0x28ce8; + run_28c00(); + return; + } + case 0x28ab8: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r17 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x28ac8; + return; + case 0x28ac8: + /* Next insn is delay slot */ + r31 = 0x28ad0; + pc = 0x24000; + run_24000(); + return; + case 0x28ad0: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x2887c; + run_28800(); + return; + case 0x28adc: + /* Next insn is delay slot */ + r31 = 0x28ae4; + pc = 0x25c00; + run_25c00(); + return; + case 0x28ae4: + r4 = r29 + 16; + r16 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x28af4; + pc = 0x27e00; + run_27e00(); + return; + case 0x28af4: + r3 = r0 + 4; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x28d20; + run_28c00(); + return; + } + r3 = (r2 & 0xffffffffL) < (5 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x28f5c; + run_28e00(); + return; + } + r3 = r0 + 8; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x28fb4; + run_28e00(); + return; + } + r3 = r0 + 36; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x28c3c; + run_28c00(); + return; + } + r2 = 5 << 16; + r17 = r17 << 1; + r2 = r2 + 32568; + case 0x28b30: + r2 = r17 + r2; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + r6 = tmp; + r4 = r16 + r0; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x28b48; + pc = 0x28400; + run_28400(); + return; + case 0x28b48: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x28b54: + /* Next insn is delay slot */ + r31 = 0x28b5c; + pc = 0x25c00; + run_25c00(); + return; + case 0x28b5c: + r4 = r29 + 16; + writePages[(r29 + 120) >>> 12][((r29 + 120) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x28b6c; + pc = 0x27e00; + run_27e00(); + return; + case 0x28b6c: + r3 = r0 + 2; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x28da4; + run_28c00(); + return; + } + r3 = (r2 & 0xffffffffL) < (3 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x28f14; + run_28e00(); + return; + } + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x28fdc; + run_28e00(); + return; + } + r3 = r0 + 1; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x28c3c; + run_28c00(); + return; + } + r2 = 6 << 16; + r2 = r2 + -32568; + r17 = r17 + r2; + addr = r17 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r4 = tmp; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x28c3c; + run_28c00(); + return; + } + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x28bc4; + return; + case 0x28bc4: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x28bd0: + /* Next insn is delay slot */ + r31 = 0x28bd8; + pc = 0x25c00; + run_25c00(); + return; + case 0x28bd8: + r4 = r29 + 16; + writePages[(r29 + 120) >>> 12][((r29 + 120) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x28be8; + pc = 0x27e00; + run_27e00(); + return; + case 0x28be8: + r3 = r0 + 256; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x28e7c; + run_28e00(); + return; + } + r3 = (r2 & 0xffffffffL) < (257 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x28eac; + run_28e00(); + return; + } + case 0x28c00: + pc = 0x28c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_28c00() throws ExecutionException { /* 0x28c00 - 0x28e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x28c00: + r3 = r0 + 4; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x29168; + run_29000(); + return; + } + r3 = (r2 & 0xffffffffL) < (5 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x28ff0; + run_28e00(); + return; + } + r3 = r0 + 36; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x29178; + run_29000(); + return; + } + r3 = r0 + 128; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x290e8; + run_29000(); + return; + } + r3 = r0 + 8; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x290ac; + run_29000(); + return; + } + case 0x28c3c: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 32488; + /* Next insn is delay slot */ + r31 = 0x28c50; + pc = 0x20600; + run_20600(); + return; + case 0x28c50: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x28c5c: + r5 = 5 << 16; + r4 = r29 + 16; + r5 = r5 + 31164; + r6 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x28c74; + pc = 0x47400; + run_47400(); + return; + case 0x28c74: + r4 = r0 + -2; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x28c84; + pc = 0x20600; + run_20600(); + return; + case 0x28c84: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x2887c; + run_28800(); + return; + case 0x28c90: + r4 = 5 << 16; + r4 = r4 + 31244; + r5 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x28ca4; + pc = 0x21a00; + run_21a00(); + return; + case 0x28ca4: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x28cb0: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r17 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x28cc0; + return; + case 0x28cc0: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x28cd0; + return; + case 0x28cd0: + r4 = r0 + 3; + /* Next insn is delay slot */ + r31 = 0x28cdc; + pc = 0x27800; + run_27800(); + return; + case 0x28cdc: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x28ce8: + r2 = 6 << 16; + r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2 = r2 & 16; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x28ab8; + run_28a00(); + return; + } + r4 = 5 << 16; + r4 = r4 + 31104; + /* Next insn is delay slot */ + r31 = 0x28d18; + pc = 0x21800; + run_21800(); + return; + case 0x28d18: + /* Next insn is delay slot */ + pc = 0x28ab8; + run_28a00(); + return; + case 0x28d20: + r2 = 5 << 16; + r17 = r17 << 1; + r2 = r2 + 32584; + r2 = r17 + r2; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + r6 = tmp; + r4 = r16 + r0; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x28d44; + pc = 0x28400; + run_28400(); + return; + case 0x28d44: + r3 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x28900; + run_28800(); + return; + } + addr = r29 + 27; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r3 = tmp; + r2 = r0 + 255; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x28900; + run_28800(); + return; + } + r2 = 6 << 16; + r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2 = r2 & 1; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x28900; + run_28800(); + return; + } + r5 = 5 << 16; + r4 = r0 + -1; + r5 = r5 + 31064; + /* Next insn is delay slot */ + r31 = 0x28d98; + pc = 0x20600; + run_20600(); + return; + case 0x28d98: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x28da4: + r2 = 6 << 16; + r2 = r2 + -32616; + r17 = r17 + r2; + addr = r17 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r5 = tmp; + r6 = r16 & 768; + r4 = r29 + 120; + /* Next insn is delay slot */ + r31 = 0x28dc4; + pc = 0x27400; + run_27400(); + return; + case 0x28dc4: + r4 = readPages[(r29 + 120) >>> 12][((r29 + 120) >>> 2) & 0x3ff]; + r6 = r2 + r0; + r5 = r29 + 16; + r16 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x28ddc; + pc = 0x28400; + run_28400(); + return; + case 0x28ddc: + r2 = 6 << 16; + r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2 = r2 & 4; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x28900; + run_28800(); + return; + } + r3 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + case 0x28e00: + pc = 0x28e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_28e00() throws ExecutionException { /* 0x28e00 - 0x29000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x28e00: + r2 = r0 + 1; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x28900; + run_28800(); + return; + } + r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x28900; + run_28800(); + return; + } + r2 = r0 + 139; + if (r16 == r2) { + /* Next insn is delay slot */ + pc = 0x2919c; + run_29000(); + return; + } + r2 = r0 + 171; + if (r16 != r2) { + /* Next insn is delay slot */ + pc = 0x28900; + run_28800(); + return; + } + r5 = 5 << 16; + r4 = r0 + -1; + r5 = r5 + 31016; + /* Next insn is delay slot */ + r31 = 0x28e48; + pc = 0x20600; + run_20600(); + return; + case 0x28e48: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x28e54: + /* Next insn is delay slot */ + r31 = 0x28e5c; + pc = 0x23400; + run_23400(); + return; + case 0x28e5c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x2892c; + run_28800(); + return; + case 0x28e68: + /* Next insn is delay slot */ + r31 = 0x28e70; + pc = 0x23400; + run_23400(); + return; + case 0x28e70: + r16 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x2893c; + run_28800(); + return; + case 0x28e7c: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + -31864; + case 0x28e88: + r2 = r17 + r2; + r6 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 120) >>> 12][((r29 + 120) >>> 2) & 0x3ff]; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x28ea0; + pc = 0x28400; + run_28400(); + return; + case 0x28ea0: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x28eac: + r3 = r0 + 392; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x29144; + run_29000(); + return; + } + r3 = (r2 & 0xffffffffL) < (393 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x29044; + run_29000(); + return; + } + r3 = r0 + 516; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x29134; + run_29000(); + return; + } + r3 = r0 + 520; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x290f8; + run_29000(); + return; + } + r3 = r0 + 404; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x28c3c; + run_28c00(); + return; + } + r2 = 6 << 16; + r2 = r2 + -32280; + case 0x28ef0: + r17 = r17 + r2; + r4 = readPages[(r29 + 120) >>> 12][((r29 + 120) >>> 2) & 0x3ff]; + addr = r17 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r6 = tmp; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x28f08; + pc = 0x28400; + run_28400(); + return; + case 0x28f08: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x28f14: + r3 = r0 + 256; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x28fc8; + continue; + } + r3 = r0 + 384; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x28c3c; + run_28c00(); + return; + } + r2 = 5 << 16; + r17 = r17 << 1; + r2 = r2 + 32632; + case 0x28f38: + r2 = r17 + r2; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + r6 = tmp; + r4 = readPages[(r29 + 120) >>> 12][((r29 + 120) >>> 2) & 0x3ff]; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x28f50; + pc = 0x28400; + run_28400(); + return; + case 0x28f50: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x28f5c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x28c3c; + run_28c00(); + return; + } + r2 = 5 << 16; + r17 = r17 << 2; + r2 = r2 + 32600; + r2 = r17 + r2; + r6 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r4 = r16 + r0; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x28f88; + pc = 0x28400; + run_28400(); + return; + case 0x28f88: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x28f94: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x28fa8; + pc = 0x20600; + run_20600(); + return; + case 0x28fa8: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x2887c; + run_28800(); + return; + case 0x28fb4: + r2 = 5 << 16; + r17 = r17 << 1; + r2 = r2 + 32552; + /* Next insn is delay slot */ + pc = 0x28b30; + run_28a00(); + return; + case 0x28fc8: + r2 = 5 << 16; + r17 = r17 << 1; + r2 = r2 + 32728; + /* Next insn is delay slot */ + pc = 0x28f38; + continue; + case 0x28fdc: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + -32712; + /* Next insn is delay slot */ + pc = 0x28f38; + continue; + case 0x28ff0: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x29154; + run_29000(); + return; + } + r3 = r0 + 2; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x28c3c; + run_28c00(); + return; + } + case 0x29000: + pc = 0x29000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_29000() throws ExecutionException { /* 0x29000 - 0x29200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x29000: + r2 = 6 << 16; + r2 = r2 + -31400; + r17 = r17 + r2; + addr = r17 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r5 = tmp; + r4 = r29 + 120; + r6 = r16 & 768; + /* Next insn is delay slot */ + r31 = 0x29024; + pc = 0x27400; + run_27400(); + return; + case 0x29024: + r4 = readPages[(r29 + 120) >>> 12][((r29 + 120) >>> 2) & 0x3ff]; + r6 = r2 + r0; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x29038; + pc = 0x28400; + run_28400(); + return; + case 0x29038: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x29044: + r3 = r0 + 384; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x29188; + continue; + } + r3 = r0 + 388; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x28c3c; + run_28c00(); + return; + } + r2 = 6 << 16; + r2 = r2 + -32100; + case 0x29064: + r17 = r17 + r2; + r4 = readPages[(r29 + 120) >>> 12][((r29 + 120) >>> 2) & 0x3ff]; + addr = r17 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r6 = tmp; + r5 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x2907c; + pc = 0x28400; + run_28400(); + return; + case 0x2907c: + r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r5 = r29 + 24; + /* Next insn is delay slot */ + r31 = 0x2908c; + pc = 0x27a00; + run_27a00(); + return; + case 0x2908c: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x29098: + /* Next insn is delay slot */ + r31 = 0x290a0; + pc = 0x23400; + run_23400(); + return; + case 0x290a0: + r16 = r16 ^ 1; + /* Next insn is delay slot */ + pc = 0x28978; + run_28800(); + return; + case 0x290ac: + r16 = r16 & 2048; + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x290c8; + continue; + } + r2 = 6 << 16; + r2 = r2 + -32340; + /* Next insn is delay slot */ + pc = 0x28ef0; + run_28e00(); + return; + case 0x290c8: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r0 + 234; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x290d8; + return; + case 0x290d8: + r2 = 6 << 16; + r2 = r2 + -32340; + /* Next insn is delay slot */ + pc = 0x28ef0; + run_28e00(); + return; + case 0x290e8: + r2 = 6 << 16; + r2 = r2 + -32220; + /* Next insn is delay slot */ + pc = 0x28ef0; + run_28e00(); + return; + case 0x290f8: + r16 = r16 & 2048; + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x29114; + continue; + } + r2 = 6 << 16; + r2 = r2 + -32520; + /* Next insn is delay slot */ + pc = 0x28ef0; + run_28e00(); + return; + case 0x29114: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r0 + 234; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x29124; + return; + case 0x29124: + r2 = 6 << 16; + r2 = r2 + -32520; + /* Next insn is delay slot */ + pc = 0x28ef0; + run_28e00(); + return; + case 0x29134: + r2 = 6 << 16; + r2 = r2 + -32460; + /* Next insn is delay slot */ + pc = 0x29064; + continue; + case 0x29144: + r2 = 6 << 16; + r2 = r2 + -32400; + /* Next insn is delay slot */ + pc = 0x28ef0; + run_28e00(); + return; + case 0x29154: + r2 = 6 << 16; + r17 = r17 << 2; + r2 = r2 + -31632; + /* Next insn is delay slot */ + pc = 0x28e88; + run_28e00(); + return; + case 0x29168: + r2 = 6 << 16; + r2 = r2 + -32160; + /* Next insn is delay slot */ + pc = 0x29064; + continue; + case 0x29178: + r2 = 6 << 16; + r2 = r2 + -32040; + /* Next insn is delay slot */ + pc = 0x28ef0; + run_28e00(); + return; + case 0x29188: + r2 = 6 << 16; + r17 = r17 << 1; + r2 = r2 + -31980; + /* Next insn is delay slot */ + pc = 0x28f38; + run_28e00(); + return; + case 0x2919c: + r5 = 5 << 16; + r4 = r0 + -1; + r5 = r5 + 30968; + /* Next insn is delay slot */ + r31 = 0x291b0; + pc = 0x20600; + run_20600(); + return; + case 0x291b0: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x28904; + run_28800(); + return; + case 0x29200: + pc = 0x29200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_29200() throws ExecutionException { /* 0x29200 - 0x29400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x29200: + r2 = r0 + 3; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x29218; + continue; + } + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29218: + r4 = 6 << 16; + r5 = 6 << 16; + r29 = r29 + -24; + r4 = r4 + -19104; + r5 = r5 + -24536; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x29238; + pc = 0x1d200; + run_1d200(); + return; + case 0x29238: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r4 = r4 + -20244; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x28800; + run_28800(); + return; + case 0x29400: + pc = 0x29400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_29400() throws ExecutionException { /* 0x29400 - 0x29600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x29400: + r2 = r0 + 3; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x29418; + continue; + } + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29418: + r4 = 6 << 16; + r5 = 6 << 16; + r29 = r29 + -24; + r4 = r4 + -19104; + r5 = r5 + -24536; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x29438; + pc = 0x1d200; + run_1d200(); + return; + case 0x29438: + r4 = 6 << 16; + r4 = r4 + -20724; + /* Next insn is delay slot */ + r31 = 0x29448; + pc = 0x28800; + run_28800(); + return; + case 0x29448: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x29464; + continue; + } + case 0x29450: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29464: + r4 = 6 << 16; + r4 = r4 + -20764; + /* Next insn is delay slot */ + r31 = 0x29474; + pc = 0x28800; + run_28800(); + return; + case 0x29474: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x29450; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r4 = r4 + -20244; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x28800; + run_28800(); + return; + case 0x29600: + pc = 0x29600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_29600() throws ExecutionException { /* 0x29600 - 0x29800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x29600: + r2 = r0 + 3; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x29618; + continue; + } + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29618: + r4 = 6 << 16; + r5 = 6 << 16; + r29 = r29 + -24; + r4 = r4 + -19104; + r5 = r5 + -24536; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x29638; + pc = 0x1d200; + run_1d200(); + return; + case 0x29638: + r4 = 6 << 16; + r4 = r4 + -20844; + /* Next insn is delay slot */ + r31 = 0x29648; + pc = 0x28800; + run_28800(); + return; + case 0x29648: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x29664; + continue; + } + case 0x29650: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29664: + r4 = 6 << 16; + r4 = r4 + -20724; + /* Next insn is delay slot */ + r31 = 0x29674; + pc = 0x28800; + run_28800(); + return; + case 0x29674: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x29650; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r4 = r4 + -20244; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x28800; + run_28800(); + return; + case 0x29800: + pc = 0x29800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_29800() throws ExecutionException { /* 0x29800 - 0x29a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x29800: + r2 = r0 + 3; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x29818; + continue; + } + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29818: + r4 = 6 << 16; + r5 = 6 << 16; + r29 = r29 + -24; + r4 = r4 + -19104; + r5 = r5 + -24536; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x29838; + pc = 0x1d200; + run_1d200(); + return; + case 0x29838: + r4 = 6 << 16; + r4 = r4 + -21264; + /* Next insn is delay slot */ + r31 = 0x29848; + pc = 0x28800; + run_28800(); + return; + case 0x29848: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x29864; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29864: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r4 = r4 + -20244; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x28800; + run_28800(); + return; + case 0x29a00: + pc = 0x29a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_29a00() throws ExecutionException { /* 0x29a00 - 0x29c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x29a00: + r4 = r4 + -3; + r4 = (r4 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x29a1c; + continue; + } + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29a1c: + r4 = 6 << 16; + r5 = 6 << 16; + r29 = r29 + -24; + r4 = r4 + -19104; + r5 = r5 + -24536; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x29a3c; + pc = 0x1d200; + run_1d200(); + return; + case 0x29a3c: + r4 = 6 << 16; + r4 = r4 + -21264; + /* Next insn is delay slot */ + r31 = 0x29a4c; + pc = 0x28800; + run_28800(); + return; + case 0x29a4c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x29a68; + continue; + } + case 0x29a54: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29a68: + r4 = 6 << 16; + r4 = r4 + -20244; + /* Next insn is delay slot */ + r31 = 0x29a78; + pc = 0x28800; + run_28800(); + return; + case 0x29a78: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x29a54; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r4 = r4 + -21924; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x28800; + run_28800(); + return; + case 0x29c00: + pc = 0x29c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_29c00() throws ExecutionException { /* 0x29c00 - 0x29e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x29c00: + r4 = r4 + -3; + r4 = (r4 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x29c1c; + continue; + } + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29c1c: + r4 = 6 << 16; + r5 = 6 << 16; + r29 = r29 + -24; + r4 = r4 + -19104; + r5 = r5 + -24536; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x29c3c; + pc = 0x1d200; + run_1d200(); + return; + case 0x29c3c: + r4 = 6 << 16; + r4 = r4 + -21264; + /* Next insn is delay slot */ + r31 = 0x29c4c; + pc = 0x28800; + run_28800(); + return; + case 0x29c4c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x29c68; + continue; + } + case 0x29c54: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29c68: + r4 = 6 << 16; + r4 = r4 + -20244; + /* Next insn is delay slot */ + r31 = 0x29c78; + pc = 0x28800; + run_28800(); + return; + case 0x29c78: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x29c54; + continue; + } + r4 = 6 << 16; + r4 = r4 + -21924; + /* Next insn is delay slot */ + r31 = 0x29c90; + pc = 0x28800; + run_28800(); + return; + case 0x29c90: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x29c54; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r4 = r4 + -21984; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x28800; + run_28800(); + return; + case 0x29e00: + pc = 0x29e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_29e00() throws ExecutionException { /* 0x29e00 - 0x2a000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x29e00: + r4 = r4 + -3; + r4 = (r4 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x29e1c; + continue; + } + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29e1c: + r4 = 6 << 16; + r5 = 6 << 16; + r29 = r29 + -24; + r4 = r4 + -19104; + r5 = r5 + -24536; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x29e3c; + pc = 0x1d200; + run_1d200(); + return; + case 0x29e3c: + r4 = 6 << 16; + r4 = r4 + -23744; + /* Next insn is delay slot */ + r31 = 0x29e4c; + pc = 0x28800; + run_28800(); + return; + case 0x29e4c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x29e68; + continue; + } + case 0x29e54: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x29e68: + r4 = 6 << 16; + r4 = r4 + -21264; + /* Next insn is delay slot */ + r31 = 0x29e78; + pc = 0x28800; + run_28800(); + return; + case 0x29e78: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x29e54; + continue; + } + r4 = 6 << 16; + r4 = r4 + -20244; + /* Next insn is delay slot */ + r31 = 0x29e90; + pc = 0x28800; + run_28800(); + return; + case 0x29e90: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x29e54; + continue; + } + r4 = 6 << 16; + r4 = r4 + -21924; + /* Next insn is delay slot */ + r31 = 0x29ea8; + pc = 0x28800; + run_28800(); + return; + case 0x29ea8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x29e54; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r4 = r4 + -23784; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x28800; + run_28800(); + return; + case 0x2a000: + pc = 0x2a000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2a000() throws ExecutionException { /* 0x2a000 - 0x2a200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2a000: + r4 = r4 + -3; + r4 = (r4 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x2a01c; + continue; + } + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2a01c: + r4 = 6 << 16; + r5 = 6 << 16; + r29 = r29 + -24; + r4 = r4 + -19104; + r5 = r5 + -24536; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2a03c; + pc = 0x1d200; + run_1d200(); + return; + case 0x2a03c: + r4 = 6 << 16; + r4 = r4 + -23744; + /* Next insn is delay slot */ + r31 = 0x2a04c; + pc = 0x28800; + run_28800(); + return; + case 0x2a04c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2a068; + continue; + } + case 0x2a054: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2a068: + r4 = 6 << 16; + r4 = r4 + -21264; + /* Next insn is delay slot */ + r31 = 0x2a078; + pc = 0x28800; + run_28800(); + return; + case 0x2a078: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2a054; + continue; + } + r4 = 6 << 16; + r4 = r4 + -20244; + /* Next insn is delay slot */ + r31 = 0x2a090; + pc = 0x28800; + run_28800(); + return; + case 0x2a090: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2a054; + continue; + } + r4 = 6 << 16; + r4 = r4 + -21924; + /* Next insn is delay slot */ + r31 = 0x2a0a8; + pc = 0x28800; + run_28800(); + return; + case 0x2a0a8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2a054; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r4 = r4 + -23844; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x28800; + run_28800(); + return; + case 0x2a200: + pc = 0x2a200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2a200() throws ExecutionException { /* 0x2a200 - 0x2a400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2a200: + r4 = r4 + -3; + r4 = (r4 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x2a21c; + continue; + } + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2a21c: + r4 = 6 << 16; + r5 = 6 << 16; + r29 = r29 + -24; + r4 = r4 + -19104; + r5 = r5 + -24536; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2a23c; + pc = 0x1d200; + run_1d200(); + return; + case 0x2a23c: + r4 = 6 << 16; + r4 = r4 + -24364; + /* Next insn is delay slot */ + r31 = 0x2a24c; + pc = 0x28800; + run_28800(); + return; + case 0x2a24c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2a268; + continue; + } + case 0x2a254: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2a268: + r4 = 6 << 16; + r4 = r4 + -23744; + /* Next insn is delay slot */ + r31 = 0x2a278; + pc = 0x28800; + run_28800(); + return; + case 0x2a278: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2a254; + continue; + } + r4 = 6 << 16; + r4 = r4 + -21264; + /* Next insn is delay slot */ + r31 = 0x2a290; + pc = 0x28800; + run_28800(); + return; + case 0x2a290: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2a254; + continue; + } + r4 = 6 << 16; + r4 = r4 + -20244; + /* Next insn is delay slot */ + r31 = 0x2a2a8; + pc = 0x28800; + run_28800(); + return; + case 0x2a2a8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2a254; + continue; + } + r4 = 6 << 16; + r4 = r4 + -21924; + /* Next insn is delay slot */ + r31 = 0x2a2c0; + pc = 0x28800; + run_28800(); + return; + case 0x2a2c0: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2a254; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r4 = r4 + -23844; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x28800; + run_28800(); + return; + case 0x2a400: + pc = 0x2a400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2a400() throws ExecutionException { /* 0x2a400 - 0x2a600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2a400: + r2 = r0 + 3; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x2a418; + continue; + } + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2a418: + r4 = 6 << 16; + r5 = 6 << 16; + r29 = r29 + -24; + r4 = r4 + -19104; + r5 = r5 + -24536; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2a438; + pc = 0x1d200; + run_1d200(); + return; + case 0x2a438: + r4 = 6 << 16; + r4 = r4 + -22824; + /* Next insn is delay slot */ + r31 = 0x2a448; + pc = 0x28800; + run_28800(); + return; + case 0x2a448: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2a464; + continue; + } + case 0x2a450: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2a464: + r4 = 6 << 16; + r4 = r4 + -21264; + /* Next insn is delay slot */ + r31 = 0x2a474; + pc = 0x28800; + run_28800(); + return; + case 0x2a474: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2a450; + continue; + } + r4 = 6 << 16; + r4 = r4 + -20244; + /* Next insn is delay slot */ + r31 = 0x2a48c; + pc = 0x28800; + run_28800(); + return; + case 0x2a48c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2a450; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r4 = 6 << 16; + r4 = r4 + -21984; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = 0x28800; + run_28800(); + return; + case 0x2a600: + pc = 0x2a600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2a600() throws ExecutionException { /* 0x2a600 - 0x2a800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2a600: + r6 = 6 << 16; + r6 = r6 + -11464; + r3 = r4 + 1; + r2 = readPages[(r6 + 32) >>> 12][((r6 + 32) >>> 2) & 0x3ff]; + writePages[(r6 + 40) >>> 12][((r6 + 40) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r5 = r4 < r3 ? 1 : 0; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x2a644; + continue; + } + case 0x2a628: + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r3 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r5 = r4 < r3 ? 1 : 0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x2a628; + continue; + } + case 0x2a644: + r4 = 6 << 16; + r4 = r4 + -11432; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x2a664; + continue; + } + r3 = r3 + -1; + writePages[(r6 + 24) >>> 12][((r6 + 24) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2a664: + r2 = 6 << 16; + r2 = readPages[(r2 + -10248) >>> 12][((r2 + -10248) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r6 + 24) >>> 12][((r6 + 24) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2a800: + pc = 0x2a800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2a800() throws ExecutionException { /* 0x2a800 - 0x2aa00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2a800: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + r17 = 6 << 16; + r17 = r17 + -10308; + r2 = readPages[(r17 + 60) >>> 12][((r17 + 60) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r2 = r4 < r2 ? 1 : 0; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2a888; + continue; + } + case 0x2a82c: + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2a858; + continue; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2a858: + r4 = readPages[(r17 + 40) >>> 12][((r17 + 40) >>> 2) & 0x3ff]; + r5 = 6 << 16; + r5 = r5 + -31316; + /* Next insn is delay slot */ + r31 = 0x2a86c; + pc = 0x20600; + run_20600(); + return; + case 0x2a86c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r4 = r16 + 1; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x2a600; + run_2a600(); + return; + case 0x2a888: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + -31340; + /* Next insn is delay slot */ + r31 = 0x2a89c; + pc = 0x20600; + run_20600(); + return; + case 0x2a89c: + /* Next insn is delay slot */ + pc = 0x2a82c; + continue; + case 0x2aa00: + pc = 0x2aa00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2aa00() throws ExecutionException { /* 0x2aa00 - 0x2ac00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2aa00: + r29 = r29 + -32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + r17 = 6 << 16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = r17 + -11464; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r18 = r4 + r0; + r4 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r3 = r3 < r4 ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x2ab14; + continue; + } + r2 = r4 + r0; + case 0x2aa38: + r3 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r3 = r2 < r3 ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x2aa50; + continue; + } + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + case 0x2aa50: + r3 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r3 = r3 < r2 ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x2aa68; + continue; + } + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r2; + case 0x2aa68: + r3 = readPages[(r28 + -31340) >>> 12][((r28 + -31340) >>> 2) & 0x3ff]; + r5 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x2ab04; + continue; + } + r5 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x2aaf8; + continue; + } + writePages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff] = r2; + case 0x2aa94: + r4 = r18 << 24; + r6 = r5 + 1; + r4 = r4 >> 24; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r6; + r3 = r3 + r5; + addr = r3 + 1044; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x2aaac: + r3 = readPages[(r17 + -11464) >>> 12][((r17 + -11464) >>> 2) & 0x3ff]; + r5 = r2 + 1; + r2 = r3 + r2; + addr = r16 + 48; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r3 = tmp; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r5; + r4 = r4 ^ r3; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = 6 << 16; + r2 = r2 + -10224; + r3 = readPages[(r2 + 32) >>> 12][((r2 + 32) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r3 = r3 + 1; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + writePages[(r2 + 32) >>> 12][((r2 + 32) >>> 2) & 0x3ff] = r3; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2aaf8: + r4 = (r5 & 0xffffffffL) < (9 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x2aa94; + continue; + } + case 0x2ab04: + r4 = r18 << 24; + r4 = r4 >> 24; + /* Next insn is delay slot */ + pc = 0x2aaac; + continue; + case 0x2ab14: + /* Next insn is delay slot */ + r31 = 0x2ab1c; + pc = 0x2a800; + run_2a800(); + return; + case 0x2ab1c: + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x2aa38; + continue; + case 0x2ac00: + pc = 0x2ac00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2ac00() throws ExecutionException { /* 0x2ac00 - 0x2ae00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2ac00: + r29 = r29 + -24; + r5 = 5 << 16; + r5 = r5 + 29636; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = r0 + -2; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2ac24; + pc = 0x20600; + run_20600(); + return; + case 0x2ac24: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = 3 << 16; + r4 = r16 + r0; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r2 + -22016; + r29 = r29 + 24; + writePages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x2aa00; + run_2aa00(); + return; + case 0x2ae00: + pc = 0x2ae00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2ae00() throws ExecutionException { /* 0x2ae00 - 0x2b000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2ae00: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r17 = r4 + r0; + if (r4 <= 0) { + /* Next insn is delay slot */ + pc = 0x2ae9c; + continue; + } + r2 = 3 << 16; + r3 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r2 = r2 + -21504; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x2aee0; + continue; + } + case 0x2ae30: + r16 = 6 << 16; + r16 = r16 + -11464; + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r5 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2 = r3 + r17; + r4 = r2 + -1; + r5 = r5 < r4 ? 1 : 0; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x2aec0; + continue; + } + case 0x2ae54: + r5 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r5 = r3 < r5 ? 1 : 0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x2ae6c; + continue; + } + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; + case 0x2ae6c: + r3 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r3 = r3 < r4 ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x2aeb4; + continue; + } + case 0x2ae80: + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + r2 = 6 << 16; + r2 = r2 + -10224; + r3 = readPages[(r2 + 32) >>> 12][((r2 + 32) >>> 2) & 0x3ff]; + r17 = r3 + r17; + writePages[(r2 + 32) >>> 12][((r2 + 32) >>> 2) & 0x3ff] = r17; + case 0x2ae9c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2aeb4: + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x2ae80; + continue; + case 0x2aec0: + /* Next insn is delay slot */ + r31 = 0x2aec8; + pc = 0x2a800; + run_2a800(); + return; + case 0x2aec8: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r2 = r17 + r3; + r4 = r2 + -1; + /* Next insn is delay slot */ + pc = 0x2ae54; + continue; + case 0x2aee0: + r4 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x2aeec; + pc = 0x2ac00; + run_2ac00(); + return; + case 0x2aeec: + r17 = r17 + -1; + /* Next insn is delay slot */ + pc = 0x2ae30; + continue; + case 0x2b000: + pc = 0x2b000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2b000() throws ExecutionException { /* 0x2b000 - 0x2b200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2b000: + r2 = 6 << 16; + r3 = r2 + -11464; + r6 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r29 = r29 + -24; + r5 = r4 << 24; + r5 = r5 >> 24; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x2b08c; + continue; + } + r4 = readPages[(r2 + -11464) >>> 12][((r2 + -11464) >>> 2) & 0x3ff]; + r2 = 6 << 16; + r6 = readPages[(r2 + -10248) >>> 12][((r2 + -10248) >>> 2) & 0x3ff]; + r16 = r0 + 1; + writePages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x2b044; + pc = 0x4d7f0; + run_4d600(); + return; + case 0x2b044: + r3 = 6 << 16; + r3 = r3 + -10328; + r2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2b074; + continue; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r16; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2b074: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2b08c: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + -31268; + /* Next insn is delay slot */ + r31 = 0x2b0a0; + pc = 0x20600; + run_20600(); + return; + case 0x2b0a0: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2b200: + pc = 0x2b200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2b200() throws ExecutionException { /* 0x2b200 - 0x2b400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2b200: + r2 = 3 << 16; + r3 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r2 = r2 + -21504; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x2b234; + continue; + } + r2 = r0 + 1; + writePages[(r28 + -31312) >>> 12][((r28 + -31312) >>> 2) & 0x3ff] = r2; + r2 = 6 << 16; + r2 = readPages[(r2 + -11460) >>> 12][((r2 + -11460) >>> 2) & 0x3ff]; + writePages[(r28 + -31316) >>> 12][((r28 + -31316) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2b234: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29636; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x2b400: + pc = 0x2b400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2b400() throws ExecutionException { /* 0x2b400 - 0x2b600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2b400: + r2 = 3 << 16; + r3 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r2 = r2 + -21504; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x2b434; + continue; + } + r2 = r0 + 1; + writePages[(r28 + -31320) >>> 12][((r28 + -31320) >>> 2) & 0x3ff] = r2; + r2 = 6 << 16; + r2 = readPages[(r2 + -11460) >>> 12][((r2 + -11460) >>> 2) & 0x3ff]; + writePages[(r28 + -31324) >>> 12][((r28 + -31324) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2b434: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29636; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x2b600: + pc = 0x2b600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2b600() throws ExecutionException { /* 0x2b600 - 0x2b800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2b600: + r29 = r29 + -32; + r4 = 6 << 16; + r6 = 6 << 16; + r4 = r4 + -19092; + r5 = r29 + 16; + r6 = r6 + -24536; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2b624; + pc = 0x38c00; + run_38c00(); + return; + case 0x2b624: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2b648; + continue; + } + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + writePages[(r28 + -31308) >>> 12][((r28 + -31308) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2b648: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2b800: + pc = 0x2b800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2b800() throws ExecutionException { /* 0x2b800 - 0x2ba00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2b800: + r2 = readPages[(r28 + -31308) >>> 12][((r28 + -31308) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2b824; + continue; + } + r2 = r0 + 2; + writePages[(r28 + -31308) >>> 12][((r28 + -31308) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2b824: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2ba00: + pc = 0x2ba00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2ba00() throws ExecutionException { /* 0x2ba00 - 0x2bc00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2ba00: + r2 = readPages[(r28 + -31404) >>> 12][((r28 + -31404) >>> 2) & 0x3ff]; + r29 = r29 + -24; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2ba3c; + continue; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + -31240; + /* Next insn is delay slot */ + r31 = 0x2ba28; + pc = 0x20600; + run_20600(); + return; + case 0x2ba28: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2ba3c: + r4 = 6 << 16; + r4 = r4 + -24536; + /* Next insn is delay slot */ + r31 = 0x2ba4c; + pc = 0x1c800; + run_1c800(); + return; + case 0x2ba4c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r28 + -31404) >>> 12][((r28 + -31404) >>> 2) & 0x3ff] = r2; + r2 = r0 + r0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2bc00: + pc = 0x2bc00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2bc00() throws ExecutionException { /* 0x2bc00 - 0x2be00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2bc00: + r29 = r29 + -32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r16 = 6 << 16; + r16 = r16 + -10308; + r4 = readPages[(r16 + 60) >>> 12][((r16 + 60) >>> 2) & 0x3ff]; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2bc24; + pc = 0x20800; + run_20800(); + return; + case 0x2bc24: + r5 = readPages[(r16 + 64) >>> 12][((r16 + 64) >>> 2) & 0x3ff]; + r17 = 6 << 16; + r3 = r0 + 256; + writePages[(r17 + -11464) >>> 12][((r17 + -11464) >>> 2) & 0x3ff] = r2; + r17 = r17 + -11464; + if (r5 == r3) { + /* Next insn is delay slot */ + pc = 0x2bc88; + continue; + } + r3 = r0 + 1; + r5 = r5 << 24; + writePages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = r3; + r5 = r5 >> 24; + case 0x2bc50: + r6 = readPages[(r16 + 60) >>> 12][((r16 + 60) >>> 2) & 0x3ff]; + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x2bc60; + pc = 0x4d7f0; + run_4d600(); + return; + case 0x2bc60: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = 6 << 16; + r2 = r2 + -11432; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r17 + 32) >>> 12][((r17 + 32) >>> 2) & 0x3ff] = r2; + writePages[(r17 + 36) >>> 12][((r17 + 36) >>> 2) & 0x3ff] = r2; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2bc88: + writePages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = r0; + r5 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x2bc50; + continue; + case 0x2be00: + pc = 0x2be00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2be00() throws ExecutionException { /* 0x2be00 - 0x2c000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2be00: + r29 = r29 + -56; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r19; + r19 = 6 << 16; + r2 = r19 + -11464; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + r3 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r16 = r4 + r0; + r4 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r2 = readPages[(r28 + -31312) >>> 12][((r28 + -31312) >>> 2) & 0x3ff]; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2be44; + continue; + } + r4 = readPages[(r28 + -31316) >>> 12][((r28 + -31316) >>> 2) & 0x3ff]; + case 0x2be44: + r2 = readPages[(r28 + -31320) >>> 12][((r28 + -31320) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2c08c; + run_2c000(); + return; + } + r2 = 6 << 16; + r2 = r2 + -10308; + r17 = readPages[(r2 + 72) >>> 12][((r2 + 72) >>> 2) & 0x3ff]; + r6 = r3 + 1; + r3 = r0 + -1; + if (r17 == r3) { + /* Next insn is delay slot */ + pc = 0x2c0a8; + run_2c000(); + return; + } + case 0x2be70: + r5 = readPages[(r2 + 76) >>> 12][((r2 + 76) >>> 2) & 0x3ff]; + r3 = r0 + -1; + if (r5 == r3) { + /* Next insn is delay slot */ + pc = 0x2c0bc; + run_2c000(); + return; + } + case 0x2be80: + r3 = r17 < r5 ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x2bf64; + continue; + } + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r18 = r5 - r17; + r21 = r17 + r0; + r20 = r18 + r0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2bf80; + continue; + } + case 0x2bea4: + r2 = readPages[(r28 + -31308) >>> 12][((r28 + -31308) >>> 2) & 0x3ff]; + r3 = r0 + 1; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x2bfb4; + continue; + } + case 0x2beb4: + r3 = r0 + 2; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x2bf28; + continue; + } + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x2c260; + run_2c200(); + return; + } + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r17 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x2beec: + r2 = r2 + 1; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + case 0x2bef4: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x2c218; + run_2c200(); + return; + } + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r17 = r17 >> 8; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r17 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x2bf20: + r2 = r2 + 1; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + case 0x2bf28: + r4 = readPages[(r19 + -11464) >>> 12][((r19 + -11464) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; r4 = r4 + r21; r5 = r20 + r0; - r21 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r20 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + r21 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r7 = r16 + r0; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r6 = r0 + 1; r29 = r29 + 56; - /* Next insn is delay slot */ - pc=0x3dc00; - run_3dc00(); return; - case 0x2711c: - r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x43e00; + run_43e00(); + return; + case 0x2bf64: + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; r20 = r0 + r0; r21 = r0 + r0; r18 = r0 + r0; r17 = r0 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2705c; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2bea4; continue; } - case 0x27138: + case 0x2bf80: r2 = r17 + r18; - r4 = 7 << 16; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r4 = r4 + -1856; + r4 = 6 << 16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + r4 = r4 + -31212; r5 = r18 + r0; r6 = r18 + r0; r7 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2715c; - pc=0x3fc00; - run_3fc00(); return; - case 0x2715c: - r2 = readPages[(r28+-30684)>>>12][((r28+-30684)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2bfa4; + pc = 0x45a00; + run_45a00(); + return; + case 0x2bfa4: + r2 = readPages[(r28 + -31308) >>> 12][((r28 + -31308) >>> 2) & 0x3ff]; r3 = r0 + 1; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x2706c; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x2beb4; continue; } - case 0x2716c: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + case 0x2bfb4: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r2 = r2 + -1; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x27340; - run_27200(); return; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x2c1c4; + run_2c000(); + return; } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - case 0x27198: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r17 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x2bfe0: r2 = r2 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - case 0x271a0: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + case 0x2bfe8: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r2 = r2 + -1; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x272ec; - run_27200(); return; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x2c170; + run_2c000(); + return; } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r17 = r17 >> 8; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - case 0x271cc: - r2 = r2 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - case 0x271d4: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x27298; - run_27200(); return; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - case 0x27200: - pc=0x27200; + case 0x2c000: + pc = 0x2c000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_27200() throws ExecutionException { /* 0x27200 - 0x27400 */ + + private final void run_2c000() throws ExecutionException { /* 0x2c000 - 0x2c200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x27200: + for (;;) { + switch (pc) { + case 0x2c000: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r17 = r17 >> 8; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r17 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x2c014: r2 = r2 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - case 0x27208: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + case 0x2c01c: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r2 = r2 + -1; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x27244; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x2c11c; continue; } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r18 = r18 >> 8; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x2c048: r2 = r2 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x270e0; - run_27000(); return; - case 0x27244: - r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - r2 = r2 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x274a0; - run_27400(); return; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r18 = r18 >> 8; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r0 + 10; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x270d8; - run_27000(); return; - } - case 0x2727c: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r0 + 10; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x27290; - pc=0x48200; - run_48200(); return; - case 0x27290: - /* Next insn is delay slot */ - pc=0x270e0; - run_27000(); return; - case 0x27298: - r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - r2 = r2 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2744c; - run_27400(); return; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r0 + 10; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x27200; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + case 0x2c050: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x2c0c8; continue; } - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r18 = r18 >> 8; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2 = r2 + 1; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x2bf28; + run_2be00(); + return; + case 0x2c08c: + r2 = 6 << 16; + r2 = r2 + -10308; + r17 = readPages[(r2 + 72) >>> 12][((r2 + 72) >>> 2) & 0x3ff]; + r3 = r0 + -1; + r6 = readPages[(r28 + -31324) >>> 12][((r28 + -31324) >>> 2) & 0x3ff]; + if (r17 != r3) { + /* Next insn is delay slot */ + pc = 0x2be70; + run_2be00(); + return; + } + case 0x2c0a8: + r5 = readPages[(r2 + 76) >>> 12][((r2 + 76) >>> 2) & 0x3ff]; + r3 = r0 + -1; + r17 = r4 + r0; + if (r5 != r3) { + /* Next insn is delay slot */ + pc = 0x2be80; + run_2be00(); + return; + } + case 0x2c0bc: + r5 = r6 + r0; + /* Next insn is delay slot */ + pc = 0x2be80; + run_2be00(); + return; + case 0x2c0c8: + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2 = r2 < r3 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2c324; + run_2c200(); + return; + } + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r18 = r18 >> 8; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3 = r0 + 10; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r4 = tmp; + if (r4 != r3) { + /* Next insn is delay slot */ + pc = 0x2bf20; + run_2be00(); + return; + } + case 0x2c100: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r5 = r0 + 10; r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x272e4; - pc=0x48200; - run_48200(); return; - case 0x272e4: - /* Next insn is delay slot */ - pc=0x27208; + /* Next insn is delay slot */ + r31 = 0x2c114; + pc = 0x4d200; + run_4d200(); + return; + case 0x2c114: + /* Next insn is delay slot */ + pc = 0x2bf28; + run_2be00(); + return; + case 0x2c11c: + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2 = r2 < r3 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2c2d0; + run_2c200(); + return; + } + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3 = r0 + 10; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r4 = tmp; + if (r4 != r3) { + /* Next insn is delay slot */ + pc = 0x2c048; + continue; + } + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = r0 + 10; + r6 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x2c168; + pc = 0x4d200; + run_4d200(); + return; + case 0x2c168: + /* Next insn is delay slot */ + pc = 0x2c050; continue; - case 0x272ec: - r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; + case 0x2c170: + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; r2 = r2 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x27430; - run_27400(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2c2b4; + run_2c200(); + return; } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r17 = r17 >> 8; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r17 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r3 = r0 + 10; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r4 = tmp; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x271cc; - run_27000(); return; - } - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r0 + 10; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x27338; - pc=0x48200; - run_48200(); return; - case 0x27338: - /* Next insn is delay slot */ - pc=0x271d4; - run_27000(); return; - case 0x27340: - r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - r2 = r2 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x27468; - run_27400(); return; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r0 + 10; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x27198; - run_27000(); return; - } - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r0 + 10; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x2738c; - pc=0x48200; - run_48200(); return; - case 0x2738c: - /* Next insn is delay slot */ - pc=0x271a0; - run_27000(); return; - case 0x27394: - r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - r2 = r2 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x274bc; - run_27400(); return; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r17 = r17 >> 8; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r0 + 10; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 == r3) { - /* Next insn is delay slot */ - pc=0x2727c; + if (r4 != r3) { + /* Next insn is delay slot */ + pc = 0x2c014; continue; } - r2 = r2 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x270e0; - run_27000(); return; - case 0x273dc: - r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - r2 = r2 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x27484; - run_27400(); return; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r0 + 10; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - case 0x27400: - pc=0x27400; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = r0 + 10; + r6 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x2c1bc; + pc = 0x4d200; + run_4d200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x2c1bc: + /* Next insn is delay slot */ + pc = 0x2c01c; + continue; + case 0x2c1c4: + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2 = r2 < r3 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2c2ec; + run_2c200(); + return; + } + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3 = r0 + 10; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r17 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r4 = tmp; + if (r4 != r3) { + /* Next insn is delay slot */ + pc = 0x2bfe0; + run_2be00(); + return; + } + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + case 0x2c200: + pc = 0x2c200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_27400() throws ExecutionException { /* 0x27400 - 0x27600 */ + + private final void run_2c200() throws ExecutionException { /* 0x2c200 - 0x2c400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x27400: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x270a4; - run_27000(); return; - } - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x2c200: r5 = r0 + 10; r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x27428; - pc=0x48200; - run_48200(); return; - case 0x27428: - /* Next insn is delay slot */ - pc=0x270ac; - run_27000(); return; - case 0x27430: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2c210; + pc = 0x4d200; + run_4d200(); + return; + case 0x2c210: + /* Next insn is delay slot */ + pc = 0x2bfe8; + run_2be00(); + return; + case 0x2c218: + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2 = r2 < r3 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2c340; + continue; + } + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r17 = r17 >> 8; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r17 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3 = r0 + 10; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r4 = tmp; + if (r4 == r3) { + /* Next insn is delay slot */ + pc = 0x2c100; + run_2c000(); + return; + } + r2 = r2 + 1; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x2bf28; + run_2be00(); + return; + case 0x2c260: + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2 = r2 < r3 ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2c308; + continue; + } + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3 = r0 + 10; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r17 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r4 = tmp; + if (r4 != r3) { + /* Next insn is delay slot */ + pc = 0x2beec; + run_2be00(); + return; + } + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r5 = r0 + 10; + r6 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x2c2ac; + pc = 0x4d200; + run_4d200(); + return; + case 0x2c2ac: + /* Next insn is delay slot */ + pc = 0x2bef4; + run_2be00(); + return; + case 0x2c2b4: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r5 = r17 >> 8; r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x27444; - pc=0x48200; - run_48200(); return; - case 0x27444: - /* Next insn is delay slot */ - pc=0x271d4; - run_27000(); return; - case 0x2744c: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2c2c8; + pc = 0x4d200; + run_4d200(); + return; + case 0x2c2c8: + /* Next insn is delay slot */ + pc = 0x2c01c; + run_2c000(); + return; + case 0x2c2d0: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r5 = r18 & 255; r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x27460; - pc=0x48200; - run_48200(); return; - case 0x27460: - /* Next insn is delay slot */ - pc=0x27208; - run_27200(); return; - case 0x27468: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2c2e4; + pc = 0x4d200; + run_4d200(); + return; + case 0x2c2e4: + /* Next insn is delay slot */ + pc = 0x2c050; + run_2c000(); + return; + case 0x2c2ec: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r5 = r17 & 255; r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x2747c; - pc=0x48200; - run_48200(); return; - case 0x2747c: - /* Next insn is delay slot */ - pc=0x271a0; - run_27000(); return; - case 0x27484: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2c300; + pc = 0x4d200; + run_4d200(); + return; + case 0x2c300: + /* Next insn is delay slot */ + pc = 0x2bfe8; + run_2be00(); + return; + case 0x2c308: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r5 = r17 & 255; r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x27498; - pc=0x48200; - run_48200(); return; - case 0x27498: - /* Next insn is delay slot */ - pc=0x270ac; - run_27000(); return; - case 0x274a0: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2c31c; + pc = 0x4d200; + run_4d200(); + return; + case 0x2c31c: + /* Next insn is delay slot */ + pc = 0x2bef4; + run_2be00(); + return; + case 0x2c324: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r5 = r18 >> 8; r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x274b4; - pc=0x48200; - run_48200(); return; - case 0x274b4: - /* Next insn is delay slot */ - pc=0x270e0; - run_27000(); return; - case 0x274bc: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2c338; + pc = 0x4d200; + run_4d200(); + return; + case 0x2c338: + /* Next insn is delay slot */ + pc = 0x2bf28; + run_2be00(); + return; + case 0x2c340: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r5 = r17 >> 8; r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x274d0; - pc=0x48200; - run_48200(); return; - case 0x274d0: - /* Next insn is delay slot */ - pc=0x270e0; - run_27000(); return; - case 0x27600: - pc=0x27600; + /* Next insn is delay slot */ + r31 = 0x2c354; + pc = 0x4d200; + run_4d200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x2c354: + /* Next insn is delay slot */ + pc = 0x2bf28; + run_2be00(); + return; + case 0x2c400: + pc = 0x2c400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_27600() throws ExecutionException { /* 0x27600 - 0x27800 */ + + private final void run_2c400() throws ExecutionException { /* 0x2c400 - 0x2c600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x27600: - r4 = 2 << 16; - r4 = r4 + 23040; - r2 = 7 << 16; - r2 = r2 + 16880; - r3 = r0 | 65535; - writePages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff] = r4; + for (;;) { + switch (pc) { + case 0x2c400: + r2 = 6 << 16; + r3 = readPages[(r2 + -10248) >>> 12][((r2 + -10248) >>> 2) & 0x3ff]; + r4 = 3 << 16; + r4 = r4 + -21504; + r2 = 6 << 16; + r2 = r2 + -11464; + r3 = r3 + -1; + writePages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff] = r4; r4 = r0 + -1; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = r4; - writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r3; - writePages[(r2+28)>>>12][((r2+28)>>>2)&0x3ff] = r0; - r2 = 7 << 16; - r2 = r2 + 30664; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - writePages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff] = r0; - writePages[(r2+36)>>>12][((r2+36)>>>2)&0x3ff] = r0; - writePages[(r2+40)>>>12][((r2+40)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=r31; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 20) >>> 12][((r2 + 20) >>> 2) & 0x3ff] = r4; + writePages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 28) >>> 12][((r2 + 28) >>> 2) & 0x3ff] = r0; + addr = r2 + 48; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = 6 << 16; + r2 = r2 + -10224; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 32) >>> 12][((r2 + 32) >>> 2) & 0x3ff] = r0; + writePages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; return; - case 0x27800: - pc=0x27800; + case 0x2c600: + pc = 0x2c600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_27800() throws ExecutionException { /* 0x27800 - 0x27a00 */ + + private final void run_2c600() throws ExecutionException { /* 0x2c600 - 0x2c800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x27800: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x2c600: + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2c684; + continue; + } r29 = r29 + -48; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x27864; - continue; - } - r17 = 7 << 16; - r17 = r17 + 16880; - r18 = readPages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff]; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + r17 = 6 << 16; + r17 = r17 + -11464; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r18; + r18 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; r2 = r0 + -1; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x27864; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x2c66c; continue; } - r2 = readPages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff]; + r2 = readPages[(r17 + 28) >>> 12][((r17 + 28) >>> 2) & 0x3ff]; r2 = r2 & 2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x27864; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2c66c; continue; } - r19 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; + r19 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; r19 = r19 - r18; - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x27884; + if (r19 != r0) { + /* Next insn is delay slot */ + pc = 0x2c68c; continue; } - case 0x27864: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + case 0x2c66c: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + case 0x2c684: + /* Next insn is delay slot */ + pc = r31; return; - case 0x27884: + case 0x2c68c: r4 = r0 + 16; - r16 = readPages[(r17+32)>>>12][((r17+32)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x27894; - pc=0x1b400; - run_1b400(); return; - case 0x27894: - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r18; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r19; - writePages[(r17+40)>>>12][((r17+40)>>>2)&0x3ff] = r18; + r16 = readPages[(r17 + 32) >>> 12][((r17 + 32) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2c69c; + pc = 0x20800; + run_20800(); + return; + case 0x2c69c: + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r18; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r19; + writePages[(r17 + 40) >>> 12][((r17 + 40) >>> 2) & 0x3ff] = r18; r3 = r19 + 1; - r6 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r17+44)>>>12][((r17+44)>>>2)&0x3ff] = r3; - case 0x278ac: - r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + r6 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + writePages[(r17 + 44) >>> 12][((r17 + 44) >>> 2) & 0x3ff] = r3; + case 0x2c6b4: + r3 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r4 = r3 < r6 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x278e0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x2c6e8; continue; } - if(r6 != r3) { - /* Next insn is delay slot */ - pc=0x278ec; + if (r6 != r3) { + /* Next insn is delay slot */ + pc = 0x2c6f4; continue; } - r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r3 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; + r4 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r3 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; r3 = r4 < r3 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x278ec; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x2c6f4; continue; } - case 0x278e0: - r16 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x278ac; + case 0x2c6e8: + r16 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x2c6b4; continue; - case 0x278ec: - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r16; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; + case 0x2c6f4: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r16; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + r2 = 6 << 16; + r2 = readPages[(r2 + -10304) >>> 12][((r2 + -10304) >>> 2) & 0x3ff]; r2 = r2 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x27864; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2c66c; continue; } - r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - r7 = readPages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff]; - r4 = 7 << 16; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r4 = r4 + -1800; + r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r7 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; + r4 = 6 << 16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + r4 = r4 + -31152; r5 = r19 + r0; r6 = r19 + r0; - /* Next insn is delay slot */ - r31=0x27940; - pc=0x3fc00; - run_3fc00(); return; - case 0x27940: - /* Next insn is delay slot */ - pc=0x27864; - continue; - case 0x27a00: - pc=0x27a00; + /* Next insn is delay slot */ + r31 = 0x2c74c; + pc = 0x45a00; + run_45a00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x2c74c: + /* Next insn is delay slot */ + pc = 0x2c66c; + continue; + case 0x2c800: + pc = 0x2c800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_27a00() throws ExecutionException { /* 0x27a00 - 0x27c00 */ + + private final void run_2c800() throws ExecutionException { /* 0x2c800 - 0x2ca00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x27a00: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - r29 = r29 + -56; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r21; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; - r19 = r4 + r0; - r18 = r5 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x27b18; - continue; - } - r17 = 7 << 16; - r17 = r17 + 16880; - r20 = readPages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff]; - r2 = r0 + -1; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x27b4c; - continue; - } - r2 = readPages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff]; - r4 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - r2 = r2 & 2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x27a6c; - continue; - } - r21 = r4 - r20; - if(r21 != r0) { - /* Next insn is delay slot */ - pc=0x27b58; - continue; - } - case 0x27a6c: - r4 = r19 + r4; - r2 = 2 << 16; - r4 = r4 & 65535; - writePages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff] = r18; - r2 = r2 + 22528; - r18 = r18 & 1; - writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r4; - writePages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff] = r4; - writePages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff] = r2; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x27c50; - run_27c00(); return; - } - case 0x27a98: - r2 = readPages[(r17+32)>>>12][((r17+32)>>>2)&0x3ff]; - r7 = r4 + 1; - r5 = r4 + r0; - case 0x27aa4: - writePages[(r17+40)>>>12][((r17+40)>>>2)&0x3ff] = r7; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = r5 < r3 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x27ad8; - continue; - } - case 0x27abc: - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = r5 < r3 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x27abc; - continue; - } - case 0x27ad8: - r4 = 7 << 16; - r4 = r4 + 16912; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x27d00; - run_27c00(); return; - } - r3 = r3 + -1; - writePages[(r17+24)>>>12][((r17+24)>>>2)&0x3ff] = r3; - case 0x27af0: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r21 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r20 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x27b18: - r2 = 7 << 16; - r2 = r2 + 16880; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - writePages[(r2+28)>>>12][((r2+28)>>>2)&0x3ff] = r5; - r19 = r4 + r3; - r19 = r19 & 65535; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r19; - writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = r19; - r2 = 2 << 16; - r2 = r2 + 22528; - writePages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x27af0; - continue; - case 0x27b4c: - r4 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x27a6c; - continue; - case 0x27b58: - r4 = r0 + 16; - r16 = readPages[(r17+32)>>>12][((r17+32)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x27b68; - pc=0x1b400; - run_1b400(); return; - case 0x27b68: - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r20; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r21; - writePages[(r17+40)>>>12][((r17+40)>>>2)&0x3ff] = r20; - r3 = r21 + 1; - r7 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r17+44)>>>12][((r17+44)>>>2)&0x3ff] = r3; - case 0x27b80: - r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r6 = r3 < r7 ? 1 : 0; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x27bb4; - continue; - } - if(r3 != r7) { - /* Next insn is delay slot */ - pc=0x27bc0; - continue; - } - r6 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r3 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r3 = r6 < r3 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x27bc0; - continue; - } - case 0x27bb4: - r16 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x27b80; - continue; - case 0x27bc0: - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r16; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; - r2 = r2 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x27c14; - run_27c00(); return; - } - r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - r4 = 7 << 16; - r7 = readPages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - case 0x27c00: - pc=0x27c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_27c00() throws ExecutionException { /* 0x27c00 - 0x27e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x27c00: - r4 = r4 + -1800; - r5 = r21 + r0; - r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x27c14; - pc=0x3fc00; - run_3fc00(); return; - case 0x27c14: - r4 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - r2 = 2 << 16; - r4 = r19 + r4; - r3 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - r4 = r4 & 65535; - r2 = r2 + 22528; - writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r4; - writePages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff] = r4; - writePages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff] = r18; - writePages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff] = r2; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x27af0; - run_27a00(); return; - } - r18 = r18 & 1; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x27a98; - run_27a00(); return; - } - case 0x27c50: - r2 = readPages[(r17+32)>>>12][((r17+32)>>>2)&0x3ff]; - r7 = r4 + 1; - r3 = r0 + 1; - writePages[(r17+40)>>>12][((r17+40)>>>2)&0x3ff] = r7; - writePages[(r17+44)>>>12][((r17+44)>>>2)&0x3ff] = r3; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r5 = r4 < r3 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x27cd0; - continue; - } - r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r3 = r3 + r5; - r3 = r4 < r3 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x27cdc; - continue; - } - r3 = r2 + r0; - /* Next insn is delay slot */ - pc=0x27cb4; - continue; - case 0x27c9c: - r6 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r5 = r5 + r6; - r5 = r4 < r5 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x27cdc; - continue; - } - case 0x27cb4: - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r5 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r6 = r4 < r5 ? 1 : 0; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x27c9c; - continue; - } - case 0x27cd0: - r5 = r4 + r0; - /* Next insn is delay slot */ - pc=0x27aa4; - run_27a00(); return; - case 0x27cdc: - r4 = 7 << 16; - r4 = r4 + -1736; - /* Next insn is delay slot */ - r31=0x27cec; - pc=0x1ac00; - run_1ac00(); return; - case 0x27cec: - r5 = readPages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff]; - r2 = readPages[(r17+32)>>>12][((r17+32)>>>2)&0x3ff]; - r7 = r5 + 1; - /* Next insn is delay slot */ - pc=0x27aa4; - run_27a00(); return; - case 0x27d00: - r2 = r0 | 65535; - writePages[(r17+24)>>>12][((r17+24)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x27af0; - run_27a00(); return; - case 0x27e00: - pc=0x27e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_27e00() throws ExecutionException { /* 0x27e00 - 0x28000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x27e00: - r2 = 7 << 16; - r29 = r29 + -40; - r2 = r2 + 30664; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - r19 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r16 = 7 << 16; - r16 = r16 + 16880; - r3 = r3 | 16; - r18 = r0 + 1; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; + for (;;) { + switch (pc) { + case 0x2c800: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + r18 = r4 + r0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; r17 = r5 + r0; - r19 = r4 - r19; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r4; - writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r18; - /* Next insn is delay slot */ - r31=0x27e54; - pc=0x27800; - run_27800(); return; - case 0x27e54: - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r19 = r19 & 65535; - r3 = r19 + r2; - r2 = 2 << 16; - r2 = r2 + 22528; - writePages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - r3 = r3 & 65535; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r3; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r3; - writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r17; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x27eec; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r16 = 6 << 16; + /* Next insn is delay slot */ + r31 = 0x2c828; + pc = 0x2c600; + run_2c600(); + return; + case 0x2c828: + r6 = 6 << 16; + r16 = r16 + -11464; + r6 = r6 + -10308; + r4 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r2 = readPages[(r6 + 60) >>> 12][((r6 + 60) >>> 2) & 0x3ff]; + r18 = r18 + r4; + r2 = r2 + -1; + r4 = r18 & r2; + r2 = 3 << 16; + r2 = r2 + -22016; + writePages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff] = r2; + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r4; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = r4; + writePages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff] = r17; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2c898; continue; } r17 = r17 & 1; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x27f0c; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x2c8b4; continue; } - r2 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; - r7 = r3 + 1; - r5 = r3 + r0; - case 0x27ea0: - writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r7; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = r5 < r3 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x27ed4; - continue; - } - case 0x27eb8: - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = r5 < r3 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x27eb8; - continue; - } - case 0x27ed4: - r4 = 7 << 16; - r4 = r4 + 16912; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x27fb4; - continue; - } - r3 = r3 + -1; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r3; - case 0x27eec: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + case 0x2c87c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x2a600; + run_2a600(); return; - case 0x27f0c: - r2 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; - r7 = r3 + 1; - writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r7; - r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r16+44)>>>12][((r16+44)>>>2)&0x3ff] = r18; - r5 = r3 < r4 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x27f84; - continue; - } - r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r4 = r4 + r5; - r4 = r3 < r4 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x27f90; - continue; - } - r4 = r2 + r0; - /* Next insn is delay slot */ - pc=0x27f68; - continue; - case 0x27f50: - r6 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - r5 = r5 + r6; - r5 = r3 < r5 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x27f90; - continue; - } - case 0x27f68: - r4 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r6 = r3 < r5 ? 1 : 0; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x27f50; - continue; - } - case 0x27f84: - r5 = r3 + r0; - /* Next insn is delay slot */ - pc=0x27ea0; - continue; - case 0x27f90: - r4 = 7 << 16; - r4 = r4 + -1736; - /* Next insn is delay slot */ - r31=0x27fa0; - pc=0x1ac00; - run_1ac00(); return; - case 0x27fa0: - r5 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; - r2 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; - r7 = r5 + 1; - /* Next insn is delay slot */ - pc=0x27ea0; - continue; - case 0x27fb4: - r2 = r0 | 65535; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x27eec; - continue; - case 0x28000: - pc=0x28000; + case 0x2c898: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x2c8b4: + r3 = r4 + 1; + writePages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff] = r3; + r2 = readPages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff]; + r3 = r0 + 1; + writePages[(r16 + 44) >>> 12][((r16 + 44) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r5 = r4 < r3 ? 1 : 0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x2c900; + continue; + } + /* Next insn is delay slot */ + pc = 0x2c87c; + continue; + case 0x2c8e4: + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r3 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r5 = r4 < r3 ? 1 : 0; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x2c87c; + continue; + } + case 0x2c900: + r5 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r3 = r3 + r5; + r3 = r4 < r3 ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x2c8e4; + continue; + } + r4 = readPages[(r6 + 40) >>> 12][((r6 + 40) >>> 2) & 0x3ff]; + r5 = 6 << 16; + r5 = r5 + -31088; + /* Next insn is delay slot */ + r31 = 0x2c92c; + pc = 0x20600; + run_20600(); + return; + case 0x2c92c: + r4 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x2c87c; + continue; + case 0x2ca00: + pc = 0x2ca00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_28000() throws ExecutionException { /* 0x28000 - 0x28200 */ + + private final void run_2ca00() throws ExecutionException { /* 0x2ca00 - 0x2cc00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x28000: - r5 = 7 << 16; + for (;;) { + switch (pc) { + case 0x2ca00: + r2 = 6 << 16; + addr = r2 + -11416; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2cc00: + pc = 0x2cc00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2cc00() throws ExecutionException { /* 0x2cc00 - 0x2ce00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2cc00: + r2 = 6 << 16; + addr = r2 + -11416; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2ce00: + pc = 0x2ce00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2ce00() throws ExecutionException { /* 0x2ce00 - 0x2d000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2ce00: + r5 = 6 << 16; r29 = r29 + -24; - r5 = r5 + 30672; + r5 = r5 + -10216; r6 = r0 + 24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x2801c; - pc=0x48fdc; - run_48e00(); return; - case 0x2801c: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2ce1c; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x2ce1c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x28200: - pc=0x28200; + case 0x2d000: + pc = 0x2d000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_28200() throws ExecutionException { /* 0x28200 - 0x28400 */ + + private final void run_2d000() throws ExecutionException { /* 0x2d000 - 0x2d200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x28200: - r2 = 7 << 16; - r2 = readPages[(r2+30696)>>>12][((r2+30696)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x2d000: + r2 = 6 << 16; + r2 = readPages[(r2 + -10192) >>> 12][((r2 + -10192) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r31; return; - case 0x28400: - pc=0x28400; + case 0x2d200: + pc = 0x2d200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_28400() throws ExecutionException { /* 0x28400 - 0x28600 */ + + private final void run_2d200() throws ExecutionException { /* 0x2d200 - 0x2d400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x28400: - r2 = 7 << 16; - r2 = r2 + 30664; - r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r3 = readPages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff]; - writePages[(r2+32)>>>12][((r2+32)>>>2)&0x3ff] = r0; - r3 = r4 + r3; - r3 = r3 & 65535; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x2d200: + r2 = 6 << 16; + r2 = r2 + -10224; + r3 = 6 << 16; + r4 = readPages[(r3 + -10248) >>> 12][((r3 + -10248) >>> 2) & 0x3ff]; + r5 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r3 = readPages[(r2 + 32) >>> 12][((r2 + 32) >>> 2) & 0x3ff]; + r4 = r4 + -1; + r3 = r5 + r3; + r3 = r4 & r3; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 32) >>> 12][((r2 + 32) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = r31; return; - case 0x28600: - pc=0x28600; + case 0x2d400: + pc = 0x2d400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_28600() throws ExecutionException { /* 0x28600 - 0x28800 */ + + private final void run_2d400() throws ExecutionException { /* 0x2d400 - 0x2d600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x28600: - r4 = 7 << 16; + for (;;) { + switch (pc) { + case 0x2d400: r29 = r29 + -24; - r4 = r4 + -1668; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x28618; - pc=0x3e000; - run_3e000(); return; - case 0x28618: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x28664; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = r0 + 12; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2d41c; + pc = 0x20800; + run_20800(); + return; + case 0x2d41c: + r3 = readPages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff]; + writePages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff] = r2; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + r3 = 6 << 16; + r3 = r3 + -10224; + r4 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r4; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r5 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r5 = r4 - r5; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r5; + writePages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff] = r4; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r2; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2d600: + pc = 0x2d600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2d600() throws ExecutionException { /* 0x2d600 - 0x2d800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2d600: + r2 = readPages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2d650; continue; } - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r2 + r0; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x28634; - pc=0x17e00; - run_17e00(); return; - case 0x28634: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + 47; - /* Next insn is delay slot */ - r31=0x28644; - pc=0x17c00; - run_17c00(); return; - case 0x28644: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x28654; - pc=0x17c00; - run_17c00(); return; - case 0x28654: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x28660; - pc=0x17a00; - run_17a00(); return; - case 0x28660: - writePages[(r28+-30676)>>>12][((r28+-30676)>>>2)&0x3ff] = r2; - case 0x28664: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + r3 = 6 << 16; + r3 = r3 + -10224; + r4 = 6 << 16; + r5 = readPages[(r4 + -10248) >>> 12][((r4 + -10248) >>> 2) & 0x3ff]; + r6 = readPages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff]; + r4 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r5 = r5 + -1; + r4 = r6 - r4; + r4 = r5 & r4; + writePages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff] = r4; + r4 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r4; + writePages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff] = r2; + case 0x2d648: + /* Next insn is delay slot */ + pc = r31; return; - case 0x28800: - pc=0x28800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_28800() throws ExecutionException { /* 0x28800 - 0x28a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x28800: - r4 = 7 << 16; - r29 = r29 + -24; - r4 = r4 + -732; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x28818; - pc=0x1b000; - run_1b000(); return; - case 0x28818: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x28a00: - pc=0x28a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_28a00() throws ExecutionException { /* 0x28a00 - 0x28c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x28a00: - r4 = 7 << 16; - r29 = r29 + -24; - r4 = r4 + -1660; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x28a18; - pc=0x1b000; - run_1b000(); return; - case 0x28a18: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x28c00: - pc=0x28c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_28c00() throws ExecutionException { /* 0x28c00 - 0x28e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x28c00: - r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x28c10; - pc=0x1ce00; - run_1ce00(); return; - case 0x28c10: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r3 = r0 + 8; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - r2 = r0 + 3; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x28e00: - pc=0x28e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_28e00() throws ExecutionException { /* 0x28e00 - 0x29000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x28e00: - r3 = r4 + r0; - r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; - r29 = r29 + -112; - writePages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff] = r21; - writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = r20; - writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = r19; - writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r18; - writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r17; - writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = r31; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r16; - r21 = r5 + r0; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r0; - r5 = r3 + r0; - r20 = 7 << 16; - r19 = 7 << 16; - r17 = 7 << 16; - /* Next insn is delay slot */ - r31=0x28e48; - pc=0x17e00; - run_17e00(); return; - case 0x28e48: - r20 = r20 + -1576; - r19 = r19 + -1588; - r18 = 7 << 16; - r17 = r17 + -1616; - /* Next insn is delay slot */ - pc=0x28ea0; - continue; - case 0x28e60: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x29048; - run_29000(); return; + case 0x2d650: + r2 = 6 << 16; + r2 = readPages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff]; + r2 = (r2 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2d648; + continue; } - r7 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r6 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r4 = r29 + 16; + r4 = 6 << 16; + r4 = r4 + -31036; + r5 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x21a00; + run_21a00(); + return; + case 0x2d800: + pc = 0x2d800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2d800() throws ExecutionException { /* 0x2d800 - 0x2da00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2d800: + r2 = readPages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff]; + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + r17 = r5 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2d848; + continue; + } + r2 = 6 << 16; + r2 = readPages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff]; + r3 = (r2 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x2d8c8; + continue; + } + r2 = (r2 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2d884; + continue; + } + case 0x2d848: + r2 = 6 << 16; + r2 = r2 + -10224; + r4 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r16; + r3 = r0 + 1; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r4 = r16 - r4; r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x28e80; - pc=0x42000; - run_42000(); return; - case 0x28e80: - r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x28e90; - pc=0x17e00; - run_17e00(); return; - case 0x28e90: - /* Next insn is delay slot */ - r31=0x28e98; - pc=0x20000; - run_20000(); return; - case 0x28e98: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x28f14; - continue; - } - case 0x28ea0: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r16 = tmp; - r2 = r0 + 34; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x28f44; - continue; - } - r4 = r29 + 56; - /* Next insn is delay slot */ - r31=0x28ebc; - pc=0x16400; - run_16400(); return; - case 0x28ebc: - r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r3 = r2 & 256; - r2 = r2 & 16; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x28e60; - continue; - } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x29030; - run_29000(); return; - } - r6 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r4 = r29 + 16; - r5 = r19 + r0; - r7 = r6 + r0; - /* Next insn is delay slot */ - r31=0x28ef4; - pc=0x42000; - run_42000(); return; - case 0x28ef4: - r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x28f04; - pc=0x17e00; - run_17e00(); return; - case 0x28f04: - /* Next insn is delay slot */ - r31=0x28f0c; - pc=0x20000; - run_20000(); return; - case 0x28f0c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x28ea0; - continue; - } - case 0x28f14: - r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x28f24; - pc=0x17c00; - run_17c00(); return; - case 0x28f24: - r2 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r21; - r31=0x28f38; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff] = r3; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x2c800; + run_2c800(); return; - case 0x28f38: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x29008; - run_29000(); return; - case 0x28f44: - /* Next insn is delay slot */ - r31=0x28f4c; - pc=0x1c600; - run_1c600(); return; - case 0x28f4c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x29004; - run_29000(); return; + case 0x2d884: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + -30936; + /* Next insn is delay slot */ + r31 = 0x2d898; + pc = 0x20600; + run_20600(); + return; + case 0x2d898: + r2 = readPages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2d848; + continue; } - if(r3 == r16) { - /* Next insn is delay slot */ - pc=0x29060; - run_29000(); return; + case 0x2d8a8: + /* Next insn is delay slot */ + r31 = 0x2d8b0; + pc = 0x2d600; + run_2d600(); + return; + case 0x2d8b0: + r2 = readPages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2d8a8; + continue; } - r16 = r0 + 34; - /* Next insn is delay slot */ - pc=0x28fa8; + /* Next insn is delay slot */ + pc = 0x2d848; continue; - case 0x28f70: - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r6 = r2 + 1; - r2 = r5 + r2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x28f8c; - pc=0x1c600; - run_1c600(); return; - case 0x28f8c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x29004; - run_29000(); return; - } - case 0x28f9c: - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x29060; - run_29000(); return; - } - r3 = r2 + r0; - case 0x28fa8: - r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r2 != r5) { - /* Next insn is delay slot */ - pc=0x28f70; + case 0x2d8c8: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + -31004; + /* Next insn is delay slot */ + r31 = 0x2d8dc; + pc = 0x20600; + run_20600(); + return; + case 0x2d8dc: + r2 = readPages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2d848; continue; } - /* Next insn is delay slot */ - r31=0x28fcc; - pc=0x17800; - run_17800(); return; - case 0x28fcc: - r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r6 = r2 + 1; - r2 = r5 + r2; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x28ff4; - pc=0x1c600; - run_1c600(); return; - case 0x28ff4: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x28f9c; + case 0x2d8ec: + /* Next insn is delay slot */ + r31 = 0x2d8f4; + pc = 0x2d600; + run_2d600(); + return; + case 0x2d8f4: + r2 = readPages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2d8ec; continue; } - case 0x29000: - pc=0x29000; + /* Next insn is delay slot */ + pc = 0x2d848; + continue; + case 0x2da00: + pc = 0x2da00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_29000() throws ExecutionException { /* 0x29000 - 0x29200 */ + + private final void run_2da00() throws ExecutionException { /* 0x2da00 - 0x2dc00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x29000: - case 0x29004: - r2 = r0 + 3; - case 0x29008: - r31 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; - r21 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - r20 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; - r19 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r18 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r17 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r16 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r29 = r29 + 112; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x29030: - r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; - r5 = r20 + r0; - /* Next insn is delay slot */ - r31=0x29040; - pc=0x17e00; - run_17e00(); return; - case 0x29040: - /* Next insn is delay slot */ - pc=0x28e90; - run_28e00(); return; - case 0x29048: - r4 = readPages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff]; - r5 = r18 + -1608; - /* Next insn is delay slot */ - r31=0x29058; - pc=0x17e00; - run_17e00(); return; - case 0x29058: - /* Next insn is delay slot */ - pc=0x28e90; - run_28e00(); return; - case 0x29060: - /* Next insn is delay slot */ - r31=0x29068; - pc=0x1c000; - run_1c000(); return; - case 0x29068: - /* Next insn is delay slot */ - pc=0x28e90; - run_28e00(); return; - case 0x29200: - pc=0x29200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_29200() throws ExecutionException { /* 0x29200 - 0x29400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x29200: - r4 = 7 << 16; - r5 = 2 << 16; - r4 = r4 + -1560; - r5 = r5 + -19968; - /* Next insn is delay slot */ - pc=0x28e00; - run_28e00(); return; - case 0x29400: - pc=0x29400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_29400() throws ExecutionException { /* 0x29400 - 0x29600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x29400: - r4 = 7 << 16; - r5 = 2 << 16; - r4 = r4 + -1548; - r5 = r5 + -20480; - /* Next insn is delay slot */ - pc=0x28e00; - run_28e00(); return; - case 0x29600: - pc=0x29600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_29600() throws ExecutionException { /* 0x29600 - 0x29800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x29600: - r4 = 7 << 16; - r5 = 2 << 16; - r4 = r4 + -1536; - r5 = r5 + -21504; - /* Next insn is delay slot */ - pc=0x28e00; - run_28e00(); return; - case 0x29800: - pc=0x29800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_29800() throws ExecutionException { /* 0x29800 - 0x29a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x29800: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x2da00: + r2 = readPages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff]; r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x29870; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2da2c; continue; } - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x2da14: + /* Next insn is delay slot */ + r31 = 0x2da1c; + pc = 0x2d600; + run_2d600(); + return; + case 0x2da1c: + r2 = readPages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2da14; + continue; + } + case 0x2da2c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2dc00: + pc = 0x2dc00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2dc00() throws ExecutionException { /* 0x2dc00 - 0x2de00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2dc00: + r29 = r29 + -24; + r7 = r6 + -1; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x2dc60; + continue; + } + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x2dc78; + continue; + } + r2 = 6 << 16; + r8 = readPages[(r2 + -10248) >>> 12][((r2 + -10248) >>> 2) & 0x3ff]; + r3 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; + r8 = r8 + -1; + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x2dc44; + continue; + case 0x2dc38: + r2 = r2 + 1; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x2dc74; + continue; + } + case 0x2dc44: + r6 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; + r5 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + r3 = r3 - r6; + r3 = r8 & r3; + if (r2 != r7) { + /* Next insn is delay slot */ + pc = 0x2dc38; + continue; + } + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r3; + case 0x2dc60: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2dc74: + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r3; + case 0x2dc78: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -30888; + /* Next insn is delay slot */ + r31 = 0x2dc8c; + pc = 0x20600; + run_20600(); + return; + case 0x2dc8c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2de00: + pc = 0x2de00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2de00() throws ExecutionException { /* 0x2de00 - 0x2e000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2de00: + r2 = readPages[(r28 + -31304) >>> 12][((r28 + -31304) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2e000: + pc = 0x2e000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2e000() throws ExecutionException { /* 0x2e000 - 0x2e200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2e000: + r4 = 6 << 16; + r29 = r29 + -32; + r4 = r4 + -30792; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x2e020; + pc = 0x44000; + run_44000(); + return; + case 0x2e020: + r17 = r2 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2e07c; + continue; + } + r16 = 6 << 16; + r4 = r16 + -24536; + /* Next insn is delay slot */ + r31 = 0x2e03c; + pc = 0x1c400; + run_1c400(); + return; + case 0x2e03c: + r4 = r16 + -24536; + r5 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x2e04c; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x2e04c: + r4 = r16 + -24536; + r5 = r0 + 47; + /* Next insn is delay slot */ + r31 = 0x2e05c; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x2e05c: + r4 = r16 + -24536; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x2e06c; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x2e06c: + r4 = r16 + -24536; + /* Next insn is delay slot */ + r31 = 0x2e078; + pc = 0x1c800; + run_1c800(); + return; + case 0x2e078: + writePages[(r28 + -31300) >>> 12][((r28 + -31300) >>> 2) & 0x3ff] = r2; + case 0x2e07c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2e200: + pc = 0x2e200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2e200() throws ExecutionException { /* 0x2e200 - 0x2e400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2e200: + r29 = r29 + -48; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + r21 = r0 + r0; + r16 = r0 + r0; + r18 = r0 + 1; + r19 = r0 + 9; + r20 = r0 + 32; + r17 = r0 + 2; + case 0x2e238: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r3 & 255; + r5 = r2 + -48; + r5 = r5 & 255; + r6 = (r5 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x2e2d8; + continue; + } + r4 = r2 + -97; + r4 = (r4 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x2e318; + continue; + } + r4 = r2 + -65; + r4 = (r4 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x2e344; + continue; + } + if (r16 == r18) { + /* Next insn is delay slot */ + pc = 0x2e394; + continue; + } + if (r3 == r19) { + /* Next insn is delay slot */ + pc = 0x2e370; + continue; + } + if (r3 == r20) { + /* Next insn is delay slot */ + pc = 0x2e370; + continue; + } + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x2e388; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x2e2ac; + pc = 0x20600; + run_20600(); + return; + case 0x2e2ac: + r2 = r0 + r0; + case 0x2e2b0: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2e2d8: + r21 = r21 << 4; + r21 = r21 | r5; + r16 = r16 + 1; + r21 = r21 & 255; + /* Next insn is delay slot */ + r31 = 0x2e2f0; + pc = 0x23400; + run_23400(); + return; + case 0x2e2f0: + if (r16 != r17) { + /* Next insn is delay slot */ + pc = 0x2e238; + continue; + } + case 0x2e2f8: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r21 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x2e308; + return; + case 0x2e308: + r21 = r0 + r0; + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x2e238; + continue; + case 0x2e318: + r21 = r21 << 4; + r2 = r2 + -87; + r21 = r21 | r2; + r16 = r16 + 1; + r21 = r21 & 255; + /* Next insn is delay slot */ + r31 = 0x2e334; + pc = 0x23400; + run_23400(); + return; + case 0x2e334: + if (r16 != r17) { + /* Next insn is delay slot */ + pc = 0x2e238; + continue; + } + /* Next insn is delay slot */ + pc = 0x2e2f8; + continue; + case 0x2e344: + r21 = r21 << 4; + r2 = r2 + -55; + r21 = r21 | r2; + r16 = r16 + 1; + r21 = r21 & 255; + /* Next insn is delay slot */ + r31 = 0x2e360; + pc = 0x23400; + run_23400(); + return; + case 0x2e360: + if (r16 != r17) { + /* Next insn is delay slot */ + pc = 0x2e238; + continue; + } + /* Next insn is delay slot */ + pc = 0x2e2f8; + continue; + case 0x2e370: + /* Next insn is delay slot */ + r31 = 0x2e378; + pc = 0x23400; + run_23400(); + return; + case 0x2e378: + if (r16 != r17) { + /* Next insn is delay slot */ + pc = 0x2e238; + continue; + } + /* Next insn is delay slot */ + pc = 0x2e2f8; + continue; + case 0x2e388: + r2 = r0 + 3; + /* Next insn is delay slot */ + pc = 0x2e2b0; + continue; + case 0x2e394: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -30784; + /* Next insn is delay slot */ + r31 = 0x2e3a8; + pc = 0x20600; + run_20600(); + return; + case 0x2e3a8: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x2e2b0; + continue; + case 0x2e400: + pc = 0x2e400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2e400() throws ExecutionException { /* 0x2e400 - 0x2e600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2e400: + r29 = r29 + -24; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x2e410; + pc = 0x24000; + run_24000(); + return; + case 0x2e410: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r3 = r0 + 9; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + r2 = r0 + 3; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2e600: + pc = 0x2e600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2e600() throws ExecutionException { /* 0x2e600 - 0x2e800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2e600: + r2 = 6 << 16; + r3 = readPages[(r2 + -10232) >>> 12][((r2 + -10232) >>> 2) & 0x3ff]; + r29 = r29 + -24; + r2 = r0 + -1; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x2e654; + continue; + } + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + r3 = readPages[(r28 + -32676) >>> 12][((r28 + -32676) >>> 2) & 0x3ff]; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x2e654; + continue; + } + writePages[(r28 + -32676) >>> 12][((r28 + -32676) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x2e640; + pc = 0x2b400; + run_2b400(); + return; + case 0x2e640: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2e654: + r4 = 6 << 16; + r4 = r4 + -30748; + /* Next insn is delay slot */ + r31 = 0x2e664; + pc = 0x21800; + run_21800(); + return; + case 0x2e664: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2e800: + pc = 0x2e800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2e800() throws ExecutionException { /* 0x2e800 - 0x2ea00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2e800: + r2 = 6 << 16; + r3 = readPages[(r2 + -10236) >>> 12][((r2 + -10236) >>> 2) & 0x3ff]; + r29 = r29 + -24; + r2 = r0 + -1; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x2e854; + continue; + } + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + r3 = readPages[(r28 + -32680) >>> 12][((r28 + -32680) >>> 2) & 0x3ff]; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x2e854; + continue; + } + writePages[(r28 + -32680) >>> 12][((r28 + -32680) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x2e840; + pc = 0x2b200; + run_2b200(); + return; + case 0x2e840: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2e854: + r4 = 6 << 16; + r4 = r4 + -30712; + /* Next insn is delay slot */ + r31 = 0x2e864; + pc = 0x21800; + run_21800(); + return; + case 0x2e864: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2ea00: + pc = 0x2ea00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2ea00() throws ExecutionException { /* 0x2ea00 - 0x2ec00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2ea00: + r29 = r29 + -88; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r16; + r16 = 6 << 16; + writePages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff] = r21; + r21 = r4 + r0; + r4 = r16 + -17572; + writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r5; + /* Next insn is delay slot */ + r31 = 0x2ea38; + pc = 0x1c400; + run_1c400(); + return; + case 0x2ea38: + r5 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r4 = r16 + -17572; + r20 = 6 << 16; + /* Next insn is delay slot */ + r31 = 0x2ea4c; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x2ea4c: + r17 = r0 + 34; + r18 = 6 << 16; + r19 = r20 + -24536; + /* Next insn is delay slot */ + pc = 0x2ea94; + continue; + case 0x2ea60: + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x2ea6c; + pc = 0x1ae00; + run_1ae00(); + return; + case 0x2ea6c: + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r4 = r29 + 16; + r2 = readPages[(r2 + 28) >>> 12][((r2 + 28) >>> 2) & 0x3ff]; + r5 = r16 + -17572; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x2ea84; + return; + case 0x2ea84: + /* Next insn is delay slot */ + r31 = 0x2ea8c; + pc = 0x25a00; + run_25a00(); + return; + case 0x2ea8c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2eb28; + continue; + } + case 0x2ea94: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r17) { + /* Next insn is delay slot */ + pc = 0x2ea60; + continue; + } + r2 = r18 + -10308; + r2 = readPages[(r2 + 52) >>> 12][((r2 + 52) >>> 2) & 0x3ff]; + r2 = (r2 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2ea60; + continue; + } + r4 = r19 + r0; + /* Next insn is delay slot */ + r31 = 0x2eac8; + pc = 0x1c400; + run_1c400(); + return; + case 0x2eac8: + r4 = r0 + 34; + /* Next insn is delay slot */ + r31 = 0x2ead4; + pc = 0x24200; + run_24200(); + return; + case 0x2ead4: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2eb74; + continue; + } + /* Next insn is delay slot */ + r31 = 0x2eae4; + pc = 0x23400; + run_23400(); + return; + case 0x2eae4: + r4 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x2eaf0; + pc = 0x24600; + run_24600(); + return; + case 0x2eaf0: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2eb74; + continue; + } + r4 = r19 + r0; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x2eb08; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x2eb08: + r5 = readPages[(r20 + -24536) >>> 12][((r20 + -24536) >>> 2) & 0x3ff]; + r4 = r16 + -17572; + /* Next insn is delay slot */ + r31 = 0x2eb18; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x2eb18: + /* Next insn is delay slot */ + r31 = 0x2eb20; + pc = 0x25a00; + run_25a00(); + return; + case 0x2eb20: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2ea94; + continue; + } + case 0x2eb28: + r4 = r16 + -17572; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x2eb38; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x2eb38: + r5 = readPages[(r16 + -17572) >>> 12][((r16 + -17572) >>> 2) & 0x3ff]; + r4 = r21 + r0; + /* Next insn is delay slot */ + r31 = 0x2eb48; + pc = 0x20600; + run_20600(); + return; + case 0x2eb48: + r2 = r0 + 1; + case 0x2eb4c: + r31 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r29 = r29 + 88; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2eb74: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x2eb4c; + continue; + case 0x2ec00: + pc = 0x2ec00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2ec00() throws ExecutionException { /* 0x2ec00 - 0x2ee00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2ec00: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + -30672; + /* Next insn is delay slot */ + pc = 0x2ea00; + run_2ea00(); + return; + case 0x2ee00: + pc = 0x2ee00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2ee00() throws ExecutionException { /* 0x2ee00 - 0x2f000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2ee00: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -30660; + /* Next insn is delay slot */ + pc = 0x2ea00; + run_2ea00(); + return; + case 0x2f000: + pc = 0x2f000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2f000() throws ExecutionException { /* 0x2f000 - 0x2f200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2f000: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + -30648; + /* Next insn is delay slot */ + pc = 0x2ea00; + run_2ea00(); + return; + case 0x2f200: + pc = 0x2f200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2f200() throws ExecutionException { /* 0x2f200 - 0x2f400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2f200: + r5 = 6 << 16; + r4 = r0 + r0; + r5 = r5 + -30640; + /* Next insn is delay slot */ + pc = 0x2ea00; + run_2ea00(); + return; + case 0x2f400: + pc = 0x2f400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2f400() throws ExecutionException { /* 0x2f400 - 0x2f600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2f400: + r29 = r29 + -24; + r4 = r0 + 1; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x2f418; + pc = 0x1fe00; + run_1fe00(); + return; + case 0x2f418: + r16 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x2f424; + pc = 0x21600; + run_21600(); + return; + case 0x2f424: + r4 = r16 + r0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2f458; + continue; + } + /* Next insn is delay slot */ + r31 = 0x2f438; + pc = 0x1fe00; + run_1fe00(); + return; + case 0x2f438: + /* Next insn is delay slot */ + r31 = 0x2f440; + pc = 0x20200; + run_20200(); + return; + case 0x2f440: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 2; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2f458: + /* Next insn is delay slot */ + r31 = 0x2f460; + pc = 0x1fe00; + run_1fe00(); + return; + case 0x2f460: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2f600: + pc = 0x2f600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2f600() throws ExecutionException { /* 0x2f600 - 0x2f800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2f600: + r29 = r29 + -24; + r4 = r0 + 1; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x2f618; + pc = 0x1fc00; + run_1fc00(); + return; + case 0x2f618: + r16 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x2f624; + pc = 0x21600; + run_21600(); + return; + case 0x2f624: + r4 = r16 + r0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2f658; + continue; + } + /* Next insn is delay slot */ + r31 = 0x2f638; + pc = 0x1fc00; + run_1fc00(); + return; + case 0x2f638: + /* Next insn is delay slot */ + r31 = 0x2f640; + pc = 0x20000; + run_20000(); + return; + case 0x2f640: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 2; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2f658: + /* Next insn is delay slot */ + r31 = 0x2f660; + pc = 0x1fc00; + run_1fc00(); + return; + case 0x2f660: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2f800: + pc = 0x2f800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2f800() throws ExecutionException { /* 0x2f800 - 0x2fa00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2f800: + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + r29 = r29 + -24; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2f874; + continue; + } + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 123; r16 = r0 + 123; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x29844; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x2f848; continue; } - case 0x2982c: - /* Next insn is delay slot */ - r31=0x29834; - pc=0x1c000; - run_1c000(); return; - case 0x29834: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x2f830: + /* Next insn is delay slot */ + r31 = 0x2f838; + pc = 0x23400; + run_23400(); + return; + case 0x2f838: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x2982c; + if (r2 != r16) { + /* Next insn is delay slot */ + pc = 0x2f830; continue; } - case 0x29844: + case 0x2f848: r4 = r0 + r0; - /* Next insn is delay slot */ - r31=0x29850; - pc=0x1d400; - run_1d400(); return; - case 0x29850: - /* Next insn is delay slot */ - r31=0x29858; - pc=0x1c000; - run_1c000(); return; - case 0x29858: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2f854; + pc = 0x24a00; + run_24a00(); + return; + case 0x2f854: + /* Next insn is delay slot */ + r31 = 0x2f85c; + pc = 0x23400; + run_23400(); + return; + case 0x2f85c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x29870: - /* Next insn is delay slot */ - r31=0x29878; - pc=0x20600; - run_20600(); return; - case 0x29878: - /* Next insn is delay slot */ - r31=0x29880; - pc=0x1c000; - run_1c000(); return; - case 0x29880: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + case 0x2f874: + /* Next insn is delay slot */ + r31 = 0x2f87c; + pc = 0x26a00; + run_26a00(); + return; + case 0x2f87c: + /* Next insn is delay slot */ + r31 = 0x2f884; + pc = 0x23400; + run_23400(); + return; + case 0x2f884: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r2 = r0 + 1; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x29a00: - pc=0x29a00; + case 0x2fa00: + pc = 0x2fa00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_29a00() throws ExecutionException { /* 0x29a00 - 0x29c00 */ + + private final void run_2fa00() throws ExecutionException { /* 0x2fa00 - 0x2fc00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x29a00: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + for (;;) { + switch (pc) { + case 0x2fa00: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r29 = r29 + -56; r2 = r0 + 32; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x29ae0; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x2faac; continue; } - case 0x29a18: + case 0x2fa18: + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x2fa24; + pc = 0x1f200; + run_1f200(); + return; + case 0x2fa24: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 123; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x2fa48; + continue; + } + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29836; + /* Next insn is delay slot */ + r31 = 0x2fa48; + pc = 0x20600; + run_20600(); + return; + case 0x2fa48: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + r4 = r0 + 1; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x2fa64; + pc = 0x24a00; + run_24a00(); + return; + case 0x2fa64: + r4 = r29 + 16; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + r31 = 0x2fa78; + pc = 0x1f400; + run_1f400(); + return; + case 0x2fa78: + r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2fa84; + pc = 0x44800; + run_44800(); + return; + case 0x2fa84: + r4 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2fa90; + pc = 0x44800; + run_44800(); + return; + case 0x2fa90: + /* Next insn is delay slot */ + r31 = 0x2fa98; + pc = 0x23400; + run_23400(); + return; + case 0x2fa98: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 56; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2faac: + /* Next insn is delay slot */ + r31 = 0x2fab4; + pc = 0x23400; + run_23400(); + return; + case 0x2fab4: + /* Next insn is delay slot */ + pc = 0x2fa18; + continue; + case 0x2fc00: + pc = 0x2fc00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_2fc00() throws ExecutionException { /* 0x2fc00 - 0x2fe00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x2fc00: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r29 = r29 + -56; + r2 = r0 + 32; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x2fce4; + continue; + } + case 0x2fc18: r4 = r29 + 16; r5 = r0 + 123; - /* Next insn is delay slot */ - r31=0x29a28; - pc=0x19600; - run_19600(); return; - case 0x29a28: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + /* Next insn is delay slot */ + r31 = 0x2fc28; + pc = 0x1f000; + run_1f000(); + return; + case 0x2fc28: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 123; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x29a48; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x2fc4c; continue; } - r4 = 7 << 16; - r4 = r4 + -6860; - /* Next insn is delay slot */ - r31=0x29a48; - pc=0x1b200; - run_1b200(); return; - case 0x29a48: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29836; + /* Next insn is delay slot */ + r31 = 0x2fc4c; + pc = 0x20600; + run_20600(); + return; + case 0x2fc4c: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; r4 = r0 + 1; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x29a64; - pc=0x1d400; - run_1d400(); return; - case 0x29a64: - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x29a70; - pc=0x1c000; - run_1c000(); return; - case 0x29a70: + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x2fc68; + pc = 0x24a00; + run_24a00(); + return; + case 0x2fc68: + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x2fc74; + pc = 0x23400; + run_23400(); + return; + case 0x2fc74: r3 = r0 + 32; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x29ad0; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x2fcd4; continue; } - case 0x29a7c: + case 0x2fc80: r5 = r0 + r0; r4 = r29 + 36; - /* Next insn is delay slot */ - r31=0x29a8c; - pc=0x19600; - run_19600(); return; - case 0x29a8c: + /* Next insn is delay slot */ + r31 = 0x2fc90; + pc = 0x1f000; + run_1f000(); + return; + case 0x2fc90: r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x29a98; - pc=0x19800; - run_19800(); return; - case 0x29a98: - r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x29aa4; - pc=0x3ea00; - run_3ea00(); return; - case 0x29aa4: - r4 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x29ab0; - pc=0x3ea00; - run_3ea00(); return; - case 0x29ab0: - r4 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x29abc; - pc=0x3ea00; - run_3ea00(); return; - case 0x29abc: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2fc9c; + pc = 0x1f400; + run_1f400(); + return; + case 0x2fc9c: + r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2fca8; + pc = 0x44800; + run_44800(); + return; + case 0x2fca8: + r4 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2fcb4; + pc = 0x44800; + run_44800(); + return; + case 0x2fcb4: + r4 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2fcc0; + pc = 0x44800; + run_44800(); + return; + case 0x2fcc0: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; r2 = r0 + 3; r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x29ad0: - /* Next insn is delay slot */ - r31=0x29ad8; - pc=0x1c000; - run_1c000(); return; - case 0x29ad8: - /* Next insn is delay slot */ - pc=0x29a7c; - continue; - case 0x29ae0: - /* Next insn is delay slot */ - r31=0x29ae8; - pc=0x1c000; - run_1c000(); return; - case 0x29ae8: - /* Next insn is delay slot */ - pc=0x29a18; - continue; - case 0x29c00: - pc=0x29c00; + case 0x2fcd4: + /* Next insn is delay slot */ + r31 = 0x2fcdc; + pc = 0x23400; + run_23400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x2fcdc: + /* Next insn is delay slot */ + pc = 0x2fc80; + continue; + case 0x2fce4: + /* Next insn is delay slot */ + r31 = 0x2fcec; + pc = 0x23400; + run_23400(); + return; + case 0x2fcec: + /* Next insn is delay slot */ + pc = 0x2fc18; + continue; + case 0x2fe00: + pc = 0x2fe00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_29c00() throws ExecutionException { /* 0x29c00 - 0x29e00 */ + + private final void run_2fe00() throws ExecutionException { /* 0x2fe00 - 0x30000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x29c00: - r29 = r29 + -88; - r4 = r29 + 72; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x29c14; - pc=0x1e400; - run_1e400(); return; - case 0x29c14: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x29c30; - continue; - } - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x2fe00: + r29 = r29 + -112; + r4 = r29 + 96; + r5 = r0 + r0; + writePages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 104) >>> 12][((r29 + 104) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x2fe1c; + pc = 0x25000; + run_25000(); return; - case 0x29c30: - /* Next insn is delay slot */ - r31=0x29c38; - pc=0x20200; - run_20200(); return; - case 0x29c38: - r4 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r5 = r2 + r0; - /* Next insn is delay slot */ - r31=0x29c48; - pc=0x2f400; - run_2f400(); return; - case 0x29c48: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x29c54; - pc=0x20000; - run_20000(); return; - case 0x29c54: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x29db0; + case 0x2fe1c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x2fe3c; continue; } - r4 = r29 + 48; - /* Next insn is delay slot */ - r31=0x29c68; - pc=0x16000; - run_16000(); return; - case 0x29c68: - r2 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x29c7c; - pc=0x20000; - run_20000(); return; - case 0x29c7c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x29d04; + r2 = r0 + r0; + case 0x2fe28: + r31 = readPages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 104) >>> 12][((r29 + 104) >>> 2) & 0x3ff]; + r29 = r29 + 112; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x2fe3c: + /* Next insn is delay slot */ + r31 = 0x2fe44; + pc = 0x25c00; + run_25c00(); + return; + case 0x2fe44: + r4 = readPages[(r29 + 96) >>> 12][((r29 + 96) >>> 2) & 0x3ff]; + r16 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x2fe54; + pc = 0x37800; + run_37800(); + return; + case 0x2fe54: + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x2fe60; + pc = 0x25a00; + run_25a00(); + return; + case 0x2fe60: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x2ff88; continue; } - r2 = readPages[(r28+-32336)>>>12][((r28+-32336)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x29df8; - continue; - } - case 0x29c94: - r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r4 = r29 + 48; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x29ca8; - pc=0x16000; - run_16000(); return; - case 0x29ca8: - r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r3 = readPages[(r28+-30740)>>>12][((r28+-30740)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x29ce4; - continue; - } - r3 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r4 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - if(r4 == r3) { - /* Next insn is delay slot */ - pc=0x29ce4; - continue; - } - r4 = 7 << 16; - r4 = r4 + -1500; - /* Next insn is delay slot */ - r31=0x29ce0; - pc=0x1ae00; - run_1ae00(); return; - case 0x29ce0: - r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - case 0x29ce4: - r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r2 = r2 < r3 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x29d34; - continue; - } - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x29d38; - continue; - case 0x29d04: - r2 = r0 + 1; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-32336)>>>12][((r28+-32336)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x29e10; - run_29e00(); return; - } - case 0x29d1c: - r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x29dd4; - continue; - } - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - case 0x29d34: - r2 = r0 + 1; - case 0x29d38: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r3 = tmp; + r2 = r0 + 2; + r3 = r3 & 223; + r3 = r3 << 24; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + r3 = r3 >> 24; + r2 = r0 + 73; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x2ff68; + continue; + } + /* Next insn is delay slot */ + r31 = 0x2fe94; + pc = 0x25400; + run_25400(); + return; + case 0x2fe94: + r2 = 6 << 16; + r5 = 5 << 16; + r4 = readPages[(r2 + -24536) >>> 12][((r2 + -24536) >>> 2) & 0x3ff]; + r5 = r5 + 26264; + /* Next insn is delay slot */ + r31 = 0x2feac; + pc = 0x47e00; + run_47e00(); + return; + case 0x2feac: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x30124; + run_30000(); + return; + } + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x30098; + run_30000(); + return; + } + r4 = r29 + 32; + /* Next insn is delay slot */ + r31 = 0x2fec8; + pc = 0x1ae00; + run_1ae00(); + return; + case 0x2fec8: + r2 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r4 = r29 + 32; + r2 = readPages[(r2 + 32) >>> 12][((r2 + 32) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x2fee0; + return; + case 0x2fee0: + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x30144; + run_30000(); + return; + } + case 0x2feec: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; r2 = r0 + 123; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x29d5c; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x2ff10; continue; } - r4 = 7 << 16; - r4 = r4 + -6860; - /* Next insn is delay slot */ - r31=0x29d5c; - pc=0x1b200; - run_1b200(); return; - case 0x29d5c: - r2 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29836; + /* Next insn is delay slot */ + r31 = 0x2ff10; + pc = 0x20600; + run_20600(); + return; + case 0x2ff10: + r2 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; r4 = r0 + 1; - r2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x29d78; - pc=0x1d400; - run_1d400(); return; - case 0x29d78: + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x2ff2c; + pc = 0x24a00; + run_24a00(); + return; + case 0x2ff2c: r4 = r29 + 16; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x29d88; - pc=0x19400; - run_19400(); return; - case 0x29d88: - r4 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x29d94; - pc=0x3ea00; - run_3ea00(); return; - case 0x29d94: - /* Next insn is delay slot */ - r31=0x29d9c; - pc=0x1c000; - run_1c000(); return; - case 0x29d9c: - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x2ff3c; + pc = 0x1ec00; + run_1ec00(); + return; + case 0x2ff3c: + r4 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x2ff48; + pc = 0x44800; + run_44800(); + return; + case 0x2ff48: + /* Next insn is delay slot */ + r31 = 0x2ff50; + pc = 0x23400; + run_23400(); + return; + case 0x2ff50: + r31 = readPages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 104) >>> 12][((r29 + 104) >>> 2) & 0x3ff]; r2 = r0 + 1; - r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; + r29 = r29 + 112; + /* Next insn is delay slot */ + pc = r31; return; - case 0x29db0: - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x29dc0; - pc=0x1b000; - run_1b000(); return; - case 0x29dc0: - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; + case 0x2ff68: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x2ff7c; + pc = 0x20600; + run_20600(); + return; + case 0x2ff7c: r2 = r0 + r0; - r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x29dd4: - r4 = 7 << 16; - r4 = r4 + -1404; - /* Next insn is delay slot */ - r31=0x29de4; - pc=0x1b200; - run_1b200(); return; - case 0x29de4: - r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x29d34; + /* Next insn is delay slot */ + pc = 0x2fe28; continue; - case 0x29df8: - r4 = 7 << 16; - r4 = r4 + -1528; - case 0x29e00: - pc=0x29e00; + case 0x2ff88: + r4 = r29 + 72; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x2ff98; + pc = 0x1a800; + run_1a800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x2ff98: + r2 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x2ffac; + pc = 0x25a00; + run_25a00(); + return; + case 0x2ffac: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x30054; + run_30000(); + return; + } + r16 = 6 << 16; + r2 = r0 + 1; + r16 = r16 + -10308; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 52) >>> 12][((r16 + 52) >>> 2) & 0x3ff]; + r2 = (r2 & 0xffffffffL) < (5 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x300d4; + run_30000(); + return; + } + case 0x2ffd8: + r2 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + r4 = r29 + 72; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x2ffec; + pc = 0x1a800; + run_1a800(); + return; + case 0x2ffec: + r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x30020; + run_30000(); + return; + } + r2 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + case 0x30000: + pc = 0x30000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_29e00() throws ExecutionException { /* 0x29e00 - 0x2a000 */ + + private final void run_30000() throws ExecutionException { /* 0x30000 - 0x30200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x29e00: - /* Next insn is delay slot */ - r31=0x29e08; - pc=0x1ae00; - run_1ae00(); return; - case 0x29e08: - /* Next insn is delay slot */ - pc=0x29c94; - run_29c00(); return; - case 0x29e10: - r4 = 7 << 16; - r4 = r4 + -1432; - /* Next insn is delay slot */ - r31=0x29e20; - pc=0x1ae00; - run_1ae00(); return; - case 0x29e20: - /* Next insn is delay slot */ - pc=0x29d1c; - run_29c00(); return; - case 0x2a000: - pc=0x2a000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2a000() throws ExecutionException { /* 0x2a000 - 0x2a200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2a000: - r29 = r29 + -32; - r4 = r29 + 16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x2a018; - pc=0x1e400; - run_1e400(); return; - case 0x2a018: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2a038; + for (;;) { + switch (pc) { + case 0x30000: + r3 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x30020; continue; } + r4 = 6 << 16; + r4 = r4 + -30604; + /* Next insn is delay slot */ + r31 = 0x30020; + pc = 0x21800; + run_21800(); + return; + case 0x30020: + r3 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + r4 = r2 < r3 ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x300b8; + continue; + } + r2 = r2 + 1; + r3 = r2 - r3; + r2 = r0 + 1; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r3; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x2feec; + run_2fe00(); + return; + case 0x30054: + r2 = 6 << 16; + r2 = readPages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r0; + r2 = (r2 & 0xffffffffL) < (5 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x300ec; + continue; + } + case 0x3006c: + r2 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x30104; + continue; + } + r3 = r2 + r0; + case 0x30080: + r2 = r0 + 1; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r3; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x2feec; + run_2fe00(); + return; + case 0x30098: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -30424; + /* Next insn is delay slot */ + r31 = 0x300ac; + pc = 0x20600; + run_20600(); + return; + case 0x300ac: r2 = r0 + r0; - case 0x2a024: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = 0x2fe28; + run_2fe00(); return; - case 0x2a038: - r5 = 7 << 16; - r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r4 = r29 + 20; - r5 = r5 + 16944; - r7 = r0 + r0; - /* Next insn is delay slot */ - r31=0x2a054; - pc=0x31200; - run_31200(); return; - case 0x2a054: - r2 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2a0d4; + case 0x300b8: + r3 = r3 + 1; + r2 = r3 - r2; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + r2 = r0 + -1; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x2feec; + run_2fe00(); + return; + case 0x300d4: + r4 = 6 << 16; + r4 = r4 + -30632; + /* Next insn is delay slot */ + r31 = 0x300e4; + pc = 0x21800; + run_21800(); + return; + case 0x300e4: + /* Next insn is delay slot */ + pc = 0x2ffd8; + run_2fe00(); + return; + case 0x300ec: + r4 = 6 << 16; + r4 = r4 + -30536; + /* Next insn is delay slot */ + r31 = 0x300fc; + pc = 0x21800; + run_21800(); + return; + case 0x300fc: + /* Next insn is delay slot */ + pc = 0x3006c; + continue; + case 0x30104: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + -30508; + /* Next insn is delay slot */ + r31 = 0x30118; + pc = 0x20600; + run_20600(); + return; + case 0x30118: + r3 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x30080; + continue; + case 0x30124: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -30484; + /* Next insn is delay slot */ + r31 = 0x30138; + pc = 0x20600; + run_20600(); + return; + case 0x30138: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x2fe28; + run_2fe00(); + return; + case 0x30144: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -30336; + /* Next insn is delay slot */ + r31 = 0x30158; + pc = 0x20600; + run_20600(); + return; + case 0x30158: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x2fe28; + run_2fe00(); + return; + case 0x30200: + pc = 0x30200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_30200() throws ExecutionException { /* 0x30200 - 0x30400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x30200: + r29 = r29 + -80; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r18; + r22 = 5 << 16; + r20 = 6 << 16; + r18 = 6 << 16; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r23; + r16 = r4 + r0; + r19 = r0 + 1; + r22 = r22 + 29836; + r20 = r20 + -30304; + r21 = 5 << 16; + r17 = 6 << 16; + r18 = r18 + -30244; + case 0x30250: + r2 = r0 + 1; + if (r16 == r2) { + /* Next insn is delay slot */ + pc = 0x303c4; continue; } - r3 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2a0bc; - continue; + case 0x3025c: + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x304ac; + run_30400(); + return; } - case 0x2a074: - r16 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r16 = r16 >>> 4; - r16 = r16 & 1; - r16 = r16 ^ 1; - case 0x2a088: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + r2 = r0 + 2; + if (r16 == r2) { + /* Next insn is delay slot */ + pc = 0x30498; + run_30400(); + return; + } + r2 = r0 + 3; + if (r16 != r2) { + /* Next insn is delay slot */ + pc = 0x3047c; + run_30400(); + return; + } + r23 = r0 + 1; + case 0x30280: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 32; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x2a0f8; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x303e0; continue; } - case 0x2a098: + case 0x30290: r2 = r0 + 123; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x2a0e0; + if (r23 == r0) { + /* Next insn is delay slot */ + pc = 0x303f8; continue; } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r16 << 1; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + case 0x3029c: + if (r19 == r0) { + /* Next insn is delay slot */ + pc = 0x303f8; + continue; + } + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x30574; + run_30400(); + return; + } + /* Next insn is delay slot */ + r31 = 0x302b4; + pc = 0x21000; + run_21000(); return; - case 0x2a0bc: - r3 = readPages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff]; - r3 = r3 + 1; - writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x2a074; - continue; - case 0x2a0d4: - r16 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2a088; - continue; - case 0x2a0e0: + case 0x302b4: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 125; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x304fc; + run_30400(); + return; + } + r4 = r0 + -3; + r5 = r21 + 29784; + /* Next insn is delay slot */ + r31 = 0x302d4; + pc = 0x20600; + run_20600(); + return; + case 0x302d4: + r19 = r0 + r0; + case 0x302d8: + /* Next insn is delay slot */ + r31 = 0x302e0; + pc = 0x23400; + run_23400(); + return; + case 0x302e0: + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x30420; + run_30400(); + return; + } + case 0x302ec: + r2 = r0 + 3; + if (r16 == r2) { + /* Next insn is delay slot */ + pc = 0x30434; + run_30400(); + return; + } + case 0x302f8: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x30568; + run_30400(); + return; + } + /* Next insn is delay slot */ + r31 = 0x30310; + pc = 0x25400; + run_25400(); + return; + case 0x30310: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x30534; + run_30400(); + return; + } + r4 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r5 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x30328; + pc = 0x47e00; + run_47e00(); + return; + case 0x30328: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x30520; + run_30400(); + return; + } + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x304e8; + run_30400(); + return; + } + case 0x30340: + r3 = r0 + 123; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x30464; + run_30400(); + return; + } + /* Next insn is delay slot */ + r31 = 0x30354; + pc = 0x25400; + run_25400(); + return; + case 0x30354: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x30534; + run_30400(); + return; + } + r16 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r5 = 6 << 16; r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x2a0ec; - pc=0x19a00; - run_19a00(); return; - case 0x2a0ec: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2a024; - continue; - case 0x2a0f8: - /* Next insn is delay slot */ - r31=0x2a100; - pc=0x1c000; - run_1c000(); return; - case 0x2a100: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - /* Next insn is delay slot */ - pc=0x2a098; - continue; - case 0x2a200: - pc=0x2a200; + r5 = r5 + -30200; + /* Next insn is delay slot */ + r31 = 0x30374; + pc = 0x47e00; + run_47e00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2a200() throws ExecutionException { /* 0x2a200 - 0x2a400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2a200: - r29 = r29 + -48; - r4 = r29 + 16; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x2a214; - pc=0x16000; - run_16000(); return; - case 0x2a214: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x30374: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x30470; + run_30400(); + return; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -30196; + /* Next insn is delay slot */ + r31 = 0x30390; + pc = 0x47e00; + run_47e00(); + return; + case 0x30390: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x30508; + run_30400(); + return; + } + r5 = 6 << 16; + r4 = r16 + r0; + r5 = r5 + -30188; + /* Next insn is delay slot */ + r31 = 0x303ac; + pc = 0x47e00; + run_47e00(); + return; + case 0x303ac: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x30580; + run_30400(); + return; + } + r16 = r0 + 2; + r2 = r0 + 1; + if (r16 != r2) { + /* Next insn is delay slot */ + pc = 0x3025c; + continue; + } + case 0x303c4: + /* Next insn is delay slot */ + r31 = 0x303cc; + pc = 0x1ea00; + run_1ea00(); + return; + case 0x303cc: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r23 = r2 + r0; + r2 = r0 + 32; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x30290; + continue; + } + case 0x303e0: + /* Next insn is delay slot */ + r31 = 0x303e8; + pc = 0x23400; + run_23400(); + return; + case 0x303e8: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 123; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x2a234; + if (r23 != r0) { + /* Next insn is delay slot */ + pc = 0x3029c; continue; } - r4 = 7 << 16; - r4 = r4 + -6860; - /* Next insn is delay slot */ - r31=0x2a234; - pc=0x1b200; - run_1b200(); return; - case 0x2a234: - r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r4 = ((r0 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - /* Next insn is delay slot */ - r31=0x2a248; - pc=0x19a00; - run_19a00(); return; - case 0x2a248: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + case 0x303f8: + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x30534; + run_30400(); + return; + } + case 0x30400: + pc = 0x30400; return; - case 0x2a400: - pc=0x2a400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2a400() throws ExecutionException { /* 0x2a400 - 0x2a600 */ + + private final void run_30400() throws ExecutionException { /* 0x30400 - 0x30600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2a400: - r29 = r29 + -64; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r16; - r16 = 7 << 16; - r16 = r16 + 30664; + for (;;) { + switch (pc) { + case 0x30400: + r4 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x3040c; + pc = 0x24a00; + run_24a00(); + return; + case 0x3040c: + /* Next insn is delay slot */ + r31 = 0x30414; + pc = 0x23400; + run_23400(); + return; + case 0x30414: + r3 = r0 + 32; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x302ec; + run_30200(); + return; + } + case 0x30420: + /* Next insn is delay slot */ + r31 = 0x30428; + pc = 0x23400; + run_23400(); + return; + case 0x30428: + r2 = r0 + 3; + if (r16 != r2) { + /* Next insn is delay slot */ + pc = 0x302f8; + run_30200(); + return; + } + case 0x30434: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x30534; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -30288; + /* Next insn is delay slot */ + r31 = 0x30458; + pc = 0x20600; + run_20600(); + return; + case 0x30458: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x30538; + continue; + case 0x30464: + r16 = r0 + 3; + /* Next insn is delay slot */ + pc = 0x30250; + run_30200(); + return; + case 0x30470: + r16 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x30250; + run_30200(); + return; + case 0x3047c: + r4 = r20 + r0; + r5 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x3048c; + pc = 0x21a00; + run_21a00(); + return; + case 0x3048c: + r23 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x30280; + run_30200(); + return; + case 0x30498: + /* Next insn is delay slot */ + r31 = 0x304a0; + pc = 0x1ea00; + run_1ea00(); + return; + case 0x304a0: + r23 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + /* Next insn is delay slot */ + pc = 0x30280; + run_30200(); + return; + case 0x304ac: r4 = r29 + 16; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r19; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r18; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r17; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - r18 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x2a430; - pc=0x16000; - run_16000(); return; - case 0x2a430: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r2 = r2 | 16; - r19 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r17; - /* Next insn is delay slot */ - r31=0x2a450; - pc=0x1b600; - run_1b600(); return; - case 0x2a450: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2a494; + /* Next insn is delay slot */ + r31 = 0x304b8; + pc = 0x1a800; + run_1a800(); + return; + case 0x304b8: + r23 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 123; + r23 = ((r0 & 0xffffffffL) < (r23 & 0xffffffffL)) ? 1 : 0; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x30514; continue; } - r17 = r17 - r19; - r19 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r17 = r19 - r17; - r17 = r17 & 65535; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r17; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r18; - r19 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r18 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + r4 = r0 + -3; + r5 = r22 + r0; + /* Next insn is delay slot */ + r31 = 0x304e0; + pc = 0x20600; + run_20600(); return; - case 0x2a494: - r4 = 7 << 16; - r4 = r4 + -732; - /* Next insn is delay slot */ - r31=0x2a4a4; - pc=0x1b000; - run_1b000(); return; - case 0x2a4a4: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r19 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r18 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + case 0x304e0: + /* Next insn is delay slot */ + pc = 0x30280; + run_30200(); return; - case 0x2a600: - pc=0x2a600; + case 0x304e8: + /* Next insn is delay slot */ + r31 = 0x304f0; + pc = 0x23400; + run_23400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x304f0: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x30340; + run_30200(); + return; + case 0x304fc: + r19 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x302d8; + run_30200(); + return; + case 0x30508: + r16 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x30250; + run_30200(); + return; + case 0x30514: + r3 = r0 + 123; + /* Next insn is delay slot */ + pc = 0x30290; + run_30200(); + return; + case 0x30520: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -30236; + /* Next insn is delay slot */ + r31 = 0x30534; + pc = 0x20600; + run_20600(); + return; + case 0x30534: + r2 = r0 + r0; + case 0x30538: + r31 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r29 = r29 + 80; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x30568: + r2 = r0 + 3; + /* Next insn is delay slot */ + pc = 0x30538; + continue; + case 0x30574: + r2 = r0 + 2; + /* Next insn is delay slot */ + pc = 0x30538; + continue; + case 0x30580: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -30180; + /* Next insn is delay slot */ + r31 = 0x30594; + pc = 0x20600; + run_20600(); + return; + case 0x30594: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x30538; + continue; + case 0x30600: + pc = 0x30600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2a600() throws ExecutionException { /* 0x2a600 - 0x2a800 */ + + private final void run_30600() throws ExecutionException { /* 0x30600 - 0x30800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2a600: - r29 = r29 + -40; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; - r16 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x30600: + r4 = r0 + 2; + /* Next insn is delay slot */ + pc = 0x30200; + run_30200(); + return; + case 0x30800: + pc = 0x30800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_30800() throws ExecutionException { /* 0x30800 - 0x30a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x30800: + r4 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x30200; + run_30200(); + return; + case 0x30a00: + pc = 0x30a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_30a00() throws ExecutionException { /* 0x30a00 - 0x30c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x30a00: + r4 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x30200; + run_30200(); + return; + case 0x30c00: + pc = 0x30c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_30c00() throws ExecutionException { /* 0x30c00 - 0x30e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x30c00: + r29 = r29 + -48; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r16; + r16 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; r4 = r29 + 16; r5 = r16 + r0; - r6 = r0 + 16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x2a624; - pc=0x48fdc; - run_48e00(); return; - case 0x2a624: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r6 = r0 + 20; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x30c24; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x30c24: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r3 = tmp; - r2 = 7 << 16; - r2 = r2 + -7236; + r2 = 5 << 16; + r2 = r2 + 29340; r2 = r3 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r2 = tmp; r2 = r2 & 64; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2a6e4; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x30ce4; continue; } - r6 = 7 << 16; + r6 = 6 << 16; r4 = r16 + r0; r7 = r0 + r0; - r6 = r6 + 6068; - case 0x2a658: - r5 = 7 << 16; - r5 = r5 + -1380; - /* Next insn is delay slot */ - r31=0x2a668; - pc=0x2e400; - run_2e400(); return; - case 0x2a668: - /* Next insn is delay slot */ - r31=0x2a670; - pc=0x1b600; - run_1b600(); return; - case 0x2a670: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2a6ac; + r6 = r6 + -24444; + case 0x30c58: + r5 = 6 << 16; + r5 = r5 + -30132; + /* Next insn is delay slot */ + r31 = 0x30c68; + pc = 0x36600; + run_36600(); + return; + case 0x30c68: + /* Next insn is delay slot */ + r31 = 0x30c70; + pc = 0x21600; + run_21600(); + return; + case 0x30c70: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x30cac; continue; } r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2a684; - pc=0x2e600; - run_2e600(); return; - case 0x2a684: - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r3 = 7 << 16; - r3 = r3 + 12764; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x30c84; + pc = 0x36a00; + run_36a00(); return; - case 0x2a6ac: - r4 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x2a6b8; - pc=0x2e600; - run_2e600(); return; - case 0x2a6b8: - r4 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; + case 0x30c84: + r2 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r3 = 6 << 16; + r3 = r3 + -30124; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r3; + r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x30cac: + r4 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x30cb8; + pc = 0x36a00; + run_36a00(); + return; + case 0x30cb8: + r4 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; r5 = r29 + 16; - r6 = r0 + 16; - /* Next insn is delay slot */ - r31=0x2a6cc; - pc=0x48fdc; - run_48e00(); return; - case 0x2a6cc: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + r6 = r0 + 20; + /* Next insn is delay slot */ + r31 = 0x30ccc; + pc = 0x4d7e0; + run_4d600(); return; - case 0x2a6e4: - /* Next insn is delay slot */ - r31=0x2a6ec; - pc=0x1ec00; - run_1ec00(); return; - case 0x2a6ec: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x2a6f8; - pc=0x17a00; - run_17a00(); return; - case 0x2a6f8: + case 0x30ccc: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x30ce4: + /* Next insn is delay slot */ + r31 = 0x30cec; + pc = 0x25200; + run_25200(); + return; + case 0x30cec: + r4 = 6 << 16; + r4 = r4 + -24536; + /* Next insn is delay slot */ + r31 = 0x30cfc; + pc = 0x1c800; + run_1c800(); + return; + case 0x30cfc: r6 = r2 + r0; - r4 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; + r4 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; r7 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2a658; + /* Next insn is delay slot */ + pc = 0x30c58; continue; - case 0x2a800: - pc=0x2a800; + case 0x30e00: + pc = 0x30e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2a800() throws ExecutionException { /* 0x2a800 - 0x2aa00 */ + + private final void run_30e00() throws ExecutionException { /* 0x30e00 - 0x31000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2a800: - r29 = r29 + -64; - r4 = r29 + 40; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r17; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x2a81c; - pc=0x1e400; - run_1e400(); return; - case 0x2a81c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2a840; - continue; - } - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r17 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r16 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2a840: - /* Next insn is delay slot */ - r31=0x2a848; - pc=0x20200; - run_20200(); return; - case 0x2a848: - r4 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r5 = r2 + r0; - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2a85c; - pc=0x2f400; - run_2f400(); return; - case 0x2a85c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r17 = r2 + r0; - r2 = r0 + 61; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x2a89c; - continue; - } - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x2a880; - pc=0x1b000; - run_1b000(); return; - case 0x2a880: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r17 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r16 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2a89c: - /* Next insn is delay slot */ - r31=0x2a8a4; - pc=0x1c000; - run_1c000(); return; - case 0x2a8a4: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2a8b0; - pc=0x16400; - run_16400(); return; - case 0x2a8b0: - r3 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - r2 = r0 + -16; - r3 = r3 & r2; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x2a8f8; - continue; - } - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r3; - case 0x2a8c8: - r4 = r17 + r0; - r5 = r29 + 16; - r6 = r0 + 1; - /* Next insn is delay slot */ - r31=0x2a8dc; - pc=0x2f600; - run_2f600(); return; - case 0x2a8dc: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r17 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r16 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2a8f8: - r3 = r16 | r3; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r3 & r2; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x2a8c8; - continue; - case 0x2aa00: - pc=0x2aa00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2aa00() throws ExecutionException { /* 0x2aa00 - 0x2ac00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2aa00: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; + for (;;) { + switch (pc) { + case 0x30e00: + r2 = 6 << 16; + r2 = readPages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff]; r29 = r29 + -24; - r3 = r0 + 32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2aa60; + r2 = (r2 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x30e3c; continue; } - case 0x2aa18: - r3 = r0 + 123; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2aa44; - continue; - } - r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x2aa30; - pc=0x31e00; - run_31e00(); return; - case 0x2aa30: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 2; + r4 = 6 << 16; + r4 = r4 + -30064; + /* Next insn is delay slot */ + r31 = 0x30e2c; + pc = 0x21800; + run_21800(); + return; + case 0x30e2c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = 0x30c00; + run_30c00(); return; - case 0x2aa44: - /* Next insn is delay slot */ - r31=0x2aa4c; - pc=0x31c00; - run_31c00(); return; - case 0x2aa4c: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; + case 0x30e3c: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -30116; + /* Next insn is delay slot */ + r31 = 0x30e50; + pc = 0x20600; + run_20600(); + return; + case 0x30e50: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = 0x30c00; + run_30c00(); return; - case 0x2aa60: - /* Next insn is delay slot */ - r31=0x2aa68; - pc=0x1c000; - run_1c000(); return; - case 0x2aa68: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - /* Next insn is delay slot */ - pc=0x2aa18; - continue; - case 0x2ac00: - pc=0x2ac00; + case 0x31000: + pc = 0x31000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2ac00() throws ExecutionException { /* 0x2ac00 - 0x2ae00 */ + + private final void run_31000() throws ExecutionException { /* 0x31000 - 0x31200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2ac00: - r2 = 7 << 16; + for (;;) { + switch (pc) { + case 0x31000: r29 = r29 + -32; - r4 = r2 + 30704; - r5 = r0 + 1; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r17 = readPages[(r2+30704)>>>12][((r2+30704)>>>2)&0x3ff]; - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2ac2c; - pc=0x17200; - run_17200(); return; - case 0x2ac2c: - /* Next insn is delay slot */ - r31=0x2ac34; - pc=0x1b600; - run_1b600(); return; - case 0x2ac34: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2ac4c; - continue; - } - r4 = r16 + 30704; - r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2ac4c; - pc=0x17200; - run_17200(); return; - case 0x2ac4c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r17 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r16 = r4 + r0; + /* Next insn is delay slot */ + r31 = 0x31020; + pc = 0x1bc00; + run_1bc00(); return; - case 0x2ae00: - pc=0x2ae00; + case 0x31020: + /* Next insn is delay slot */ + r31 = 0x31028; + pc = 0x21600; + run_21600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2ae00() throws ExecutionException { /* 0x2ae00 - 0x2b000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2ae00: - r29 = r29 + -32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r16 = 7 << 16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r17 = readPages[(r16+30664)>>>12][((r16+30664)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x2ae20; - pc=0x1f400; - run_1f400(); return; - case 0x2ae20: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2ae58; + case 0x31028: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x31040; continue; } - case 0x2ae28: - /* Next insn is delay slot */ - r31=0x2ae30; - pc=0x1b600; - run_1b600(); return; - case 0x2ae30: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2ae3c; - continue; - } - writePages[(r16+30664)>>>12][((r16+30664)>>>2)&0x3ff] = r17; - case 0x2ae3c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2ae58: - /* Next insn is delay slot */ - r31=0x2ae60; - pc=0x17000; - run_17000(); return; - case 0x2ae60: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2ae74; - continue; - } - writePages[(r16+30664)>>>12][((r16+30664)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x2ae28; - continue; - case 0x2ae74: - r4 = 7 << 16; - r4 = r4 + -1372; - /* Next insn is delay slot */ - r31=0x2ae84; - pc=0x1b000; - run_1b000(); return; - case 0x2ae84: - /* Next insn is delay slot */ - pc=0x2ae28; - continue; - case 0x2b000: - pc=0x2b000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2b000() throws ExecutionException { /* 0x2b000 - 0x2b200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2b000: - r29 = r29 + -48; - r4 = r29 + 16; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x2b018; - pc=0x16000; - run_16000(); return; - case 0x2b018: - /* Next insn is delay slot */ - r31=0x2b020; - pc=0x20000; - run_20000(); return; - case 0x2b020: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2b080; - continue; - } - r16 = r0 + r0; - case 0x2b02c: - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r3 = r2 + -1; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2b068; - continue; - } - case 0x2b044: r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x2b050; - pc=0x25e00; - run_25e00(); return; - case 0x2b050: - r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r5 = r3 + -1; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r5; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x2b044; - continue; - } - case 0x2b068: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + r5 = r17 + r0; + /* Next insn is delay slot */ + r31 = 0x31040; + pc = 0x1bc00; + run_1bc00(); + return; + case 0x31040: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r2 = r0 + 1; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2b080: - /* Next insn is delay slot */ - r31=0x2b088; - pc=0x15e00; - run_15e00(); return; - case 0x2b088: - r16 = r2 + r0; - /* Next insn is delay slot */ - pc=0x2b02c; - continue; - case 0x2b200: - pc=0x2b200; + case 0x31200: + pc = 0x31200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2b200() throws ExecutionException { /* 0x2b200 - 0x2b400 */ + + private final void run_31200() throws ExecutionException { /* 0x31200 - 0x31400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2b200: - r29 = r29 + -48; - r2 = r0 + -1; - r4 = r0 + 1; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r17; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x2b228; - pc=0x1fc00; - run_1fc00(); return; - case 0x2b228: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2b24c; - continue; - } - r2 = r0 + r0; - case 0x2b234: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x31200: + r4 = 6 << 16; + r4 = r4 + -10184; + r5 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x31000; + run_31000(); return; - case 0x2b24c: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r5 = r5 + 12832; - /* Next insn is delay slot */ - r31=0x2b264; - pc=0x3b800; - run_3b800(); return; - case 0x2b264: + case 0x31400: + pc = 0x31400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_31400() throws ExecutionException { /* 0x31400 - 0x31600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x31400: + r4 = 6 << 16; + r4 = r4 + -10184; + r5 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x31000; + run_31000(); + return; + case 0x31600: + pc = 0x31600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_31600() throws ExecutionException { /* 0x31600 - 0x31800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x31600: + r4 = 6 << 16; + r4 = r4 + -10188; + r5 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x31000; + run_31000(); + return; + case 0x31800: + pc = 0x31800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_31800() throws ExecutionException { /* 0x31800 - 0x31a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x31800: + r4 = 6 << 16; + r4 = r4 + -10188; + r5 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x31000; + run_31000(); + return; + case 0x31a00: + pc = 0x31a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_31a00() throws ExecutionException { /* 0x31a00 - 0x31c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x31a00: + r29 = r29 + -32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r16 = 6 << 16; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r17 = readPages[(r16 + -10224) >>> 12][((r16 + -10224) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x31a20; + pc = 0x25400; + run_25400(); + return; + case 0x31a20: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x31a58; + continue; + } + case 0x31a28: + /* Next insn is delay slot */ + r31 = 0x31a30; + pc = 0x21600; + run_21600(); + return; + case 0x31a30: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x31a3c; + continue; + } + writePages[(r16 + -10224) >>> 12][((r16 + -10224) >>> 2) & 0x3ff] = r17; + case 0x31a3c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x31a58: + /* Next insn is delay slot */ + r31 = 0x31a60; + pc = 0x1ba00; + run_1ba00(); + return; + case 0x31a60: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x31a74; + continue; + } + writePages[(r16 + -10224) >>> 12][((r16 + -10224) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x31a28; + continue; + case 0x31a74: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -30008; + /* Next insn is delay slot */ + r31 = 0x31a88; + pc = 0x20600; + run_20600(); + return; + case 0x31a88: + /* Next insn is delay slot */ + pc = 0x31a28; + continue; + case 0x31c00: + pc = 0x31c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_31c00() throws ExecutionException { /* 0x31c00 - 0x31e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x31c00: + r29 = r29 + -56; + r4 = r29 + 16; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + r31 = 0x31c18; + pc = 0x1a800; + run_1a800(); + return; + case 0x31c18: + /* Next insn is delay slot */ + r31 = 0x31c20; + pc = 0x25a00; + run_25a00(); + return; + case 0x31c20: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x31c3c; + continue; + } + /* Next insn is delay slot */ + pc = 0x31c68; + continue; + case 0x31c30: + r4 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x31c3c; + pc = 0x22000; + run_22000(); + return; + case 0x31c3c: + r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r3 = r2 + -1; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r3; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x31c30; + continue; + } + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 56; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x31c68: + r4 = r29 + 40; + /* Next insn is delay slot */ + r31 = 0x31c74; + pc = 0x1a600; + run_1a600(); + return; + case 0x31c74: + /* Next insn is delay slot */ + pc = 0x31c3c; + continue; + case 0x31e00: + pc = 0x31e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_31e00() throws ExecutionException { /* 0x31e00 - 0x32000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x31e00: + r29 = r29 + -96; + r2 = r0 + -1; + r4 = r29 + 72; + writePages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + r31 = 0x31e2c; + pc = 0x25600; + run_25600(); + return; + case 0x31e2c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x31e54; + continue; + } + case 0x31e34: + r31 = readPages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 96; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x31e54: + r4 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x31e60; + pc = 0x26000; + run_26000(); + return; + case 0x31e60: r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2b498; - run_2b400(); return; - } - /* Next insn is delay slot */ - r31=0x2b278; - pc=0x20000; - run_20000(); return; - case 0x2b278: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2b438; - run_2b400(); return; - } - case 0x2b280: - r4 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - if(r4 < 0) { - /* Next insn is delay slot */ - pc=0x2b2b0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x31e34; continue; } - r2 = readPages[(r28+-30576)>>>12][((r28+-30576)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2b3a0; + /* Next insn is delay slot */ + r31 = 0x31e74; + pc = 0x25a00; + run_25a00(); + return; + case 0x31e74: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x31eb4; continue; } - r2 = readPages[(r28+-30580)>>>12][((r28+-30580)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2b3a0; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r0 + 44; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x31e94; continue; } - case 0x2b2b0: - r5 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x32094; + run_32000(); + return; + } + case 0x31e94: + /* Next insn is delay slot */ + r31 = 0x31e9c; + pc = 0x25a00; + run_25a00(); + return; + case 0x31e9c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x31eb4; + continue; + } + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x32080; + run_32000(); + return; + } + case 0x31eb4: + r4 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r17 = 6 << 16; + if (r4 < 0) { + /* Next insn is delay slot */ + pc = 0x31ee8; + continue; + } + r2 = r17 + -10328; + r3 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x31fdc; + continue; + } + r2 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x31fdc; + continue; + } + case 0x31ee8: + r5 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; r4 = r16 + r0; r6 = r0 + r0; - /* Next insn is delay slot */ - r31=0x2b2c4; - pc=0x3d400; - run_3d400(); return; - case 0x2b2c4: - r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2b3a8; + /* Next insn is delay slot */ + r31 = 0x31efc; + pc = 0x43600; + run_43600(); + return; + case 0x31efc: + r2 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x31fe4; continue; } - r17 = r0 + -1; - /* Next insn is delay slot */ - pc=0x2b31c; + r18 = r0 + -1; + /* Next insn is delay slot */ + pc = 0x31f54; continue; - case 0x2b2e0: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + case 0x31f18: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r3 = r2 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r4 = tmp; - case 0x2b2f4: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - r31=0x2b304; + case 0x31f2c: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x31f3c; return; - case 0x2b304: - r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + case 0x31f3c: + r2 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; r2 = r2 + -1; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2b3a8; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r2; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x31fe4; continue; } - case 0x2b31c: - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + case 0x31f54: + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r2 = r2 + -1; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x2b2e0; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x31f18; continue; } - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x2b344; - pc=0x41600; - run_41600(); return; - case 0x2b344: - r4 = r2 + r0; - if(r2 != r17) { - /* Next insn is delay slot */ - pc=0x2b2f4; - continue; - } - r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x2b3a8; - continue; - } - r4 = 7 << 16; - r4 = r4 + -1328; - /* Next insn is delay slot */ - r31=0x2b370; - pc=0x1ac00; - run_1ac00(); return; - case 0x2b370: - r2 = readPages[(r28+-30572)>>>12][((r28+-30572)>>>2)&0x3ff]; - r4 = r0 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x2b380; + /* Next insn is delay slot */ + r31 = 0x31f7c; + pc = 0x47200; + run_47200(); return; - case 0x2b380: - r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2b370; + case 0x31f7c: + r4 = r2 + r0; + if (r2 != r18) { + /* Next insn is delay slot */ + pc = 0x31f2c; continue; } - /* Next insn is delay slot */ - pc=0x2b3a8; + r2 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + if (r2 <= 0) { + /* Next insn is delay slot */ + pc = 0x31fe4; + continue; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + -29988; + /* Next insn is delay slot */ + r31 = 0x31fac; + pc = 0x20600; + run_20600(); + return; + case 0x31fac: + r2 = readPages[(r28 + -31264) >>> 12][((r28 + -31264) >>> 2) & 0x3ff]; + r4 = r0 + r0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x31fbc; + return; + case 0x31fbc: + r2 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r2 = r2 + -1; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x31fac; + continue; + } + /* Next insn is delay slot */ + pc = 0x31fe4; continue; - case 0x2b3a0: - /* Next insn is delay slot */ - r31=0x2b3a8; - pc=0x25c00; - run_25c00(); return; - case 0x2b3a8: + case 0x31fdc: + /* Next insn is delay slot */ + r31 = 0x31fe4; + pc = 0x2ae00; + run_2ae00(); + return; + case 0x31fe4: r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x2b3b4; - pc=0x39200; - run_39200(); return; - case 0x2b3b4: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2b41c; - run_2b400(); return; + /* Next insn is delay slot */ + r31 = 0x31ff0; + pc = 0x40600; + run_40600(); + return; + case 0x31ff0: + r2 = readPages[(r17 + -10328) >>> 12][((r17 + -10328) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x32060; + run_32000(); + return; } - r2 = readPages[(r28+-30736)>>>12][((r28+-30736)>>>2)&0x3ff]; + case 0x32000: + pc = 0x32000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_32000() throws ExecutionException { /* 0x32000 - 0x32200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x32000: + r2 = 6 << 16; + r2 = readPages[(r2 + -10304) >>> 12][((r2 + -10304) >>> 2) & 0x3ff]; r2 = r2 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2b41c; - run_2b400(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x32060; + continue; } - /* Next insn is delay slot */ - r31=0x2b3e0; - pc=0x28200; - run_28200(); return; - case 0x2b3e0: - r7 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r4 = 7 << 16; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - r4 = r4 + -1304; + /* Next insn is delay slot */ + r31 = 0x32020; + pc = 0x2d000; + run_2d000(); + return; + case 0x32020: + r7 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r4 = 6 << 16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r7; + r4 = r4 + -29964; r5 = r2 + r0; r6 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2b400; - pc=0x3fc00; - run_3fc00(); return; - case 0x2b400: - pc=0x2b400; + /* Next insn is delay slot */ + r31 = 0x32040; + pc = 0x45a00; + run_45a00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2b400() throws ExecutionException { /* 0x2b400 - 0x2b600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2b400: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; + case 0x32040: + r31 = readPages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; r2 = r0 + 1; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + r29 = r29 + 96; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2b41c: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; + case 0x32060: + r31 = readPages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; r2 = r0 + 1; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + r29 = r29 + 96; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2b438: - r4 = r29 + 28; - /* Next insn is delay slot */ - r31=0x2b444; - pc=0x15a00; - run_15a00(); return; - case 0x2b444: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2b45c; - continue; - } - r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x2b480; - continue; - } - case 0x2b45c: - /* Next insn is delay slot */ - r31=0x2b464; - pc=0x20000; - run_20000(); return; - case 0x2b464: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2b280; - run_2b200(); return; - } + case 0x32080: r4 = r29 + 24; - /* Next insn is delay slot */ - r31=0x2b478; - pc=0x15a00; - run_15a00(); return; - case 0x2b478: - /* Next insn is delay slot */ - pc=0x2b280; - run_2b200(); return; - case 0x2b480: - r4 = 7 << 16; - r4 = r4 + -1352; - /* Next insn is delay slot */ - r31=0x2b490; - pc=0x1b200; - run_1b200(); return; - case 0x2b490: - /* Next insn is delay slot */ - pc=0x2b45c; - continue; - case 0x2b498: - r4 = 7 << 16; - r4 = r4 + -6824; - /* Next insn is delay slot */ - r31=0x2b4a8; - pc=0x1b000; - run_1b000(); return; - case 0x2b4a8: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x2b234; - run_2b200(); return; - case 0x2b600: - pc=0x2b600; + /* Next insn is delay slot */ + r31 = 0x3208c; + pc = 0x1a800; + run_1a800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3208c: + /* Next insn is delay slot */ + pc = 0x31eb4; + run_31e00(); + return; + case 0x32094: + r4 = r29 + 48; + /* Next insn is delay slot */ + r31 = 0x320a0; + pc = 0x1a800; + run_1a800(); + return; + case 0x320a0: + r2 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x31e94; + run_31e00(); + return; + } + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29852; + /* Next insn is delay slot */ + r31 = 0x320c4; + pc = 0x20600; + run_20600(); + return; + case 0x320c4: + /* Next insn is delay slot */ + pc = 0x31e94; + run_31e00(); + return; + case 0x32200: + pc = 0x32200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2b600() throws ExecutionException { /* 0x2b600 - 0x2b800 */ + + private final void run_32200() throws ExecutionException { /* 0x32200 - 0x32400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2b600: - r2 = 7 << 16; - r29 = r29 + -32; - r2 = r2 + 12720; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r17 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; - r16 = r0 + 34; - /* Next insn is delay slot */ - pc=0x2b650; - continue; - case 0x2b62c: - /* Next insn is delay slot */ - r31=0x2b634; - pc=0x15e00; - run_15e00(); return; - case 0x2b634: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2b640; - pc=0x25e00; - run_25e00(); return; - case 0x2b640: - /* Next insn is delay slot */ - r31=0x2b648; - pc=0x20000; - run_20000(); return; - case 0x2b648: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2b6e0; - continue; - } - case 0x2b650: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x2b62c; - continue; - } - /* Next insn is delay slot */ - r31=0x2b668; - pc=0x1c600; - run_1c600(); return; - case 0x2b668: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x2b6ac; - continue; - } - case 0x2b678: - if(r4 == r16) { - /* Next insn is delay slot */ - pc=0x2b6c8; - continue; - } - /* Next insn is delay slot */ - r31=0x2b688; - pc=0x18c00; - run_18c00(); return; - case 0x2b688: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2b694; - pc=0x25e00; - run_25e00(); return; - case 0x2b694: - /* Next insn is delay slot */ - r31=0x2b69c; - pc=0x1c600; - run_1c600(); return; - case 0x2b69c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x2b678; - continue; - } - case 0x2b6ac: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 3; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2b6c8: - /* Next insn is delay slot */ - r31=0x2b6d0; - pc=0x1c000; - run_1c000(); return; - case 0x2b6d0: - /* Next insn is delay slot */ - r31=0x2b6d8; - pc=0x20000; - run_20000(); return; - case 0x2b6d8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2b650; - continue; - } - case 0x2b6e0: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r17; + for (;;) { + switch (pc) { + case 0x32200: + r2 = 2 << 16; + r29 = r29 + -96; + r2 = r2 + 8192; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r2; + r17 = 6 << 16; r2 = r0 + 1; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r18; + r21 = readPages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff]; + writePages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r16; + r18 = r5 + r0; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r2; + addr = r29 + 56; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff] = r4; + r19 = 6 << 16; + r20 = r17 + r0; + /* Next insn is delay slot */ + pc = 0x32288; + continue; + case 0x3225c: + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x32268; + pc = 0x1ae00; + run_1ae00(); return; - case 0x2b800: - pc=0x2b800; + case 0x32268: + r4 = r29 + 16; + r5 = r29 + 48; + /* Next insn is delay slot */ + r31 = 0x32278; + pc = 0x21c00; + run_21c00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x32278: + /* Next insn is delay slot */ + r31 = 0x32280; + pc = 0x25a00; + run_25a00(); + return; + case 0x32280: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x32354; + continue; + } + case 0x32288: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 34; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x3225c; + continue; + } + r2 = r19 + -10308; + r2 = readPages[(r2 + 52) >>> 12][((r2 + 52) >>> 2) & 0x3ff]; + r2 = (r2 & 0xffffffffL) < (6 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3225c; + continue; + } + r4 = r17 + -24536; + /* Next insn is delay slot */ + r31 = 0x322bc; + pc = 0x1c400; + run_1c400(); + return; + case 0x322bc: + r4 = r0 + 34; + /* Next insn is delay slot */ + r31 = 0x322c8; + pc = 0x24200; + run_24200(); + return; + case 0x322c8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x32388; + continue; + } + /* Next insn is delay slot */ + r31 = 0x322d8; + pc = 0x23400; + run_23400(); + return; + case 0x322d8: + r4 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x322e4; + pc = 0x24600; + run_24600(); + return; + case 0x322e4: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x32388; + continue; + } + r22 = r20 + -24536; + r2 = readPages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x32278; + continue; + } + r2 = r0 + r0; + r16 = r0 + r0; + case 0x32308: + r3 = readPages[(r17 + -24536) >>> 12][((r17 + -24536) >>> 2) & 0x3ff]; + r16 = r16 + 1; + r2 = r3 + r2; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r4 = tmp; + /* Next insn is delay slot */ + r31 = 0x32320; + pc = 0x1dc00; + run_1dc00(); + return; + case 0x32320: + r2 = r2 ^ r18; + r4 = r2 & 255; + /* Next insn is delay slot */ + r31 = 0x32330; + pc = 0x22000; + run_22000(); + return; + case 0x32330: + r3 = readPages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff]; + r2 = r16 + r0; + r3 = ((r16 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x32308; + continue; + } + /* Next insn is delay slot */ + r31 = 0x3234c; + pc = 0x25a00; + run_25a00(); + return; + case 0x3234c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x32288; + continue; + } + case 0x32354: + writePages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff] = r21; + r2 = r0 + 1; + case 0x3235c: + r31 = readPages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r29 = r29 + 96; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x32388: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x3235c; + continue; + case 0x32400: + pc = 0x32400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2b800() throws ExecutionException { /* 0x2b800 - 0x2ba00 */ + + private final void run_32400() throws ExecutionException { /* 0x32400 - 0x32600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2b800: - r2 = readPages[(r28+-32764)>>>12][((r28+-32764)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x32400: + r4 = 6 << 16; + r4 = r4 + -15284; + r5 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x32200; + run_32200(); + return; + case 0x32600: + pc = 0x32600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_32600() throws ExecutionException { /* 0x32600 - 0x32800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x32600: + r4 = 6 << 16; + r4 = r4 + -15280; + r5 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x32200; + run_32200(); + return; + case 0x32800: + pc = 0x32800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_32800() throws ExecutionException { /* 0x32800 - 0x32a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x32800: + r4 = 6 << 16; + r4 = r4 + -15276; + r5 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x32200; + run_32200(); + return; + case 0x32a00: + pc = 0x32a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_32a00() throws ExecutionException { /* 0x32a00 - 0x32c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x32a00: + r4 = readPages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff]; + r5 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x32200; + run_32200(); + return; + case 0x32c00: + pc = 0x32c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_32c00() throws ExecutionException { /* 0x32c00 - 0x32e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x32c00: + r29 = r29 + -72; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r4; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r0; + addr = r29 + 56; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x32c14: + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x32c20; + pc = 0x1ae00; + run_1ae00(); + return; + case 0x32c20: + r4 = r29 + 16; + r5 = r29 + 48; + /* Next insn is delay slot */ + r31 = 0x32c30; + pc = 0x21c00; + run_21c00(); + return; + case 0x32c30: + /* Next insn is delay slot */ + r31 = 0x32c38; + pc = 0x25a00; + run_25a00(); + return; + case 0x32c38: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x32c14; + continue; + } + r31 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 72; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x32e00: + pc = 0x32e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_32e00() throws ExecutionException { /* 0x32e00 - 0x33000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x32e00: + r4 = 2 << 16; + r4 = r4 + 11264; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x33000: + pc = 0x33000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_33000() throws ExecutionException { /* 0x33000 - 0x33200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x33000: + r4 = 2 << 16; + r4 = r4 + 10752; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x33200: + pc = 0x33200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_33200() throws ExecutionException { /* 0x33200 - 0x33400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x33200: + r2 = 6 << 16; + r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2 = r2 & 8; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x33230; + continue; + } + r4 = 2 << 16; + r4 = r4 + 11264; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x33230: + r4 = 2 << 16; + r4 = r4 + 10752; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x33400: + pc = 0x33400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_33400() throws ExecutionException { /* 0x33400 - 0x33600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x33400: + r4 = 2 << 16; + r4 = r4 + 10240; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x33600: + pc = 0x33600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_33600() throws ExecutionException { /* 0x33600 - 0x33800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x33600: + r4 = 2 << 16; + r4 = r4 + 9728; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x33800: + pc = 0x33800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_33800() throws ExecutionException { /* 0x33800 - 0x33a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x33800: + r2 = 6 << 16; + r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2 = r2 & 8; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x33830; + continue; + } + r4 = 2 << 16; + r4 = r4 + 10240; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x33830: + r4 = 2 << 16; + r4 = r4 + 9728; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x33a00: + pc = 0x33a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_33a00() throws ExecutionException { /* 0x33a00 - 0x33c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x33a00: + r4 = 2 << 16; + r4 = r4 + 9216; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x33c00: + pc = 0x33c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_33c00() throws ExecutionException { /* 0x33c00 - 0x33e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x33c00: + r4 = 2 << 16; + r4 = r4 + 8704; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x33e00: + pc = 0x33e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_33e00() throws ExecutionException { /* 0x33e00 - 0x34000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x33e00: + r2 = 6 << 16; + r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r2 = r2 & 8; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x33e30; + continue; + } + r4 = 2 << 16; + r4 = r4 + 9216; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x33e30: + r4 = 2 << 16; + r4 = r4 + 8704; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x34000: + pc = 0x34000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_34000() throws ExecutionException { /* 0x34000 - 0x34200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x34000: + r4 = 2 << 16; + r4 = r4 + 8192; + /* Next insn is delay slot */ + pc = 0x32c00; + run_32c00(); + return; + case 0x34200: + pc = 0x34200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_34200() throws ExecutionException { /* 0x34200 - 0x34400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x34200: + r29 = r29 + -296; + writePages[(r29 + 288) >>> 12][((r29 + 288) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 284) >>> 12][((r29 + 284) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 280) >>> 12][((r29 + 280) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 276) >>> 12][((r29 + 276) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 292) >>> 12][((r29 + 292) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + r18 = readPages[(r28 + -32696) >>> 12][((r28 + -32696) >>> 2) & 0x3ff]; + r19 = readPages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff]; + r17 = r29 + 16; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3424c; + continue; + } + r4 = r17 + r0; + r5 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x34240; + pc = 0x1e000; + run_1e000(); + return; + case 0x34240: + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x3424c; + pc = 0x40600; + run_40600(); + return; + case 0x3424c: + r2 = 6 << 16; + r2 = r2 + -15288; + writePages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff] = r2; + writePages[(r28 + -32696) >>> 12][((r28 + -32696) >>> 2) & 0x3ff] = r17; + /* Next insn is delay slot */ + r31 = 0x34264; + pc = 0x21600; + run_21600(); + return; + case 0x34264: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x342a8; + continue; + } + r4 = r18 + r0; + r5 = r17 + r0; + r6 = r0 + 256; + /* Next insn is delay slot */ + r31 = 0x34280; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x34280: + r31 = readPages[(r29 + 292) >>> 12][((r29 + 292) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 288) >>> 12][((r29 + 288) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 280) >>> 12][((r29 + 280) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 276) >>> 12][((r29 + 276) >>> 2) & 0x3ff]; + writePages[(r28 + -32696) >>> 12][((r28 + -32696) >>> 2) & 0x3ff] = r18; + r2 = r0 + 1; + r18 = readPages[(r29 + 284) >>> 12][((r29 + 284) >>> 2) & 0x3ff]; + r29 = r29 + 296; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x342a8: + r31 = readPages[(r29 + 292) >>> 12][((r29 + 292) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 280) >>> 12][((r29 + 280) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 276) >>> 12][((r29 + 276) >>> 2) & 0x3ff]; + writePages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff] = r19; + writePages[(r28 + -32696) >>> 12][((r28 + -32696) >>> 2) & 0x3ff] = r18; + r19 = readPages[(r29 + 288) >>> 12][((r29 + 288) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 284) >>> 12][((r29 + 284) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 296; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x34400: + pc = 0x34400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_34400() throws ExecutionException { /* 0x34400 - 0x34600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x34400: + r29 = r29 + -32; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x34414; + pc = 0x2ca00; + run_2ca00(); + return; + case 0x34414: + r4 = r29 + 16; + r16 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x34424; + pc = 0x1a600; + run_1a600(); + return; + case 0x34424: + r3 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = r3 + 128; + r2 = (r2 & 0xffffffffL) < (384 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3448c; + continue; + } + r4 = r3 << 24; + r4 = r4 >> 24; + case 0x34444: + r4 = r4 ^ r16; + r4 = r4 << 24; + r4 = r4 >> 24; + /* Next insn is delay slot */ + r31 = 0x34458; + pc = 0x2cc00; + run_2cc00(); + return; + case 0x34458: + /* Next insn is delay slot */ + r31 = 0x34460; + pc = 0x21600; + run_21600(); + return; + case 0x34460: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x34474; + continue; + } + r4 = r16 + r0; + /* Next insn is delay slot */ + r31 = 0x34474; + pc = 0x2cc00; + run_2cc00(); + return; + case 0x34474: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x3448c: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29728; + /* Next insn is delay slot */ + r31 = 0x344a0; + pc = 0x20600; + run_20600(); + return; + case 0x344a0: + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r0; + r4 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x34444; + continue; + case 0x34600: + pc = 0x34600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_34600() throws ExecutionException { /* 0x34600 - 0x34800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x34600: + r2 = 6 << 16; + r2 = readPages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x34644; + continue; + } + r2 = (r2 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x34634; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -29840; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x34634: + r4 = 6 << 16; + r4 = r4 + -29904; + /* Next insn is delay slot */ + pc = 0x21800; + run_21800(); + return; + case 0x34644: + /* Next insn is delay slot */ + pc = r31; + return; + case 0x34800: + pc = 0x34800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_34800() throws ExecutionException { /* 0x34800 - 0x34a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x34800: + r29 = r29 + -24; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x34810; + pc = 0x34600; + run_34600(); + return; + case 0x34810: + /* Next insn is delay slot */ + r31 = 0x34818; + pc = 0x2da00; + run_2da00(); + return; + case 0x34818: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x34a00: + pc = 0x34a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_34a00() throws ExecutionException { /* 0x34a00 - 0x34c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x34a00: + r29 = r29 + -48; + r4 = r29 + 16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x34a14; + pc = 0x1a800; + run_1a800(); + return; + case 0x34a14: + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x34a20; + pc = 0x2d400; + run_2d400(); + return; + case 0x34a20: + /* Next insn is delay slot */ + r31 = 0x34a28; + pc = 0x21600; + run_21600(); + return; + case 0x34a28: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x34a4c; + continue; + } + /* Next insn is delay slot */ + r31 = 0x34a38; + pc = 0x34600; + run_34600(); + return; + case 0x34a38: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x34a4c: + /* Next insn is delay slot */ + r31 = 0x34a54; + pc = 0x2d600; + run_2d600(); + return; + case 0x34a54: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x34c00: + pc = 0x34c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_34c00() throws ExecutionException { /* 0x34c00 - 0x34e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x34c00: + r2 = 6 << 16; + r2 = readPages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff]; + r29 = r29 + -24; + r2 = (r2 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x34c4c; + continue; + } + r2 = 6 << 16; + r4 = 6 << 16; + r2 = r2 + -15280; + r4 = r4 + -29732; + writePages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x34c38; + pc = 0x21800; + run_21800(); + return; + case 0x34c38: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x34c4c: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -29776; + /* Next insn is delay slot */ + r31 = 0x34c60; + pc = 0x20600; + run_20600(); + return; + case 0x34c60: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x34e00: + pc = 0x34e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_34e00() throws ExecutionException { /* 0x34e00 - 0x35000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x34e00: + r29 = r29 + -48; + r4 = r29 + 16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x34e14; + pc = 0x1a800; + run_1a800(); + return; + case 0x34e14: + /* Next insn is delay slot */ + r31 = 0x34e1c; + pc = 0x25a00; + run_25a00(); + return; + case 0x34e1c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x34e74; + continue; + } + r2 = 6 << 16; + r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + -10252) >>> 12][((r2 + -10252) >>> 2) & 0x3ff]; + r2 = r2 < r4 ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x34e54; + continue; + } + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x34e54: + r5 = 6 << 16; + r5 = r5 + -29648; + /* Next insn is delay slot */ + r31 = 0x34e64; + pc = 0x2ea00; + run_2ea00(); + return; + case 0x34e64: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x34e74: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -29684; + /* Next insn is delay slot */ + r31 = 0x34e88; + pc = 0x20600; + run_20600(); + return; + case 0x34e88: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x35000: + pc = 0x35000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_35000() throws ExecutionException { /* 0x35000 - 0x35200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x35000: + r2 = readPages[(r28 + -32768) >>> 12][((r28 + -32768) >>> 2) & 0x3ff]; r29 = r29 + -64; r2 = r2 + -1; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r19; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r18; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r17; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r16; r30 = r29 + r0; - writePages[(r28+-32764)>>>12][((r28+-32764)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x2b934; + writePages[(r28 + -32768) >>> 12][((r28 + -32768) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x3512c; continue; } - case 0x2b834: - r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x2b840; - pc=0x1fc00; - run_1fc00(); return; - case 0x2b840: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2b874; + case 0x35034: + r4 = r30 + 36; + /* Next insn is delay slot */ + r31 = 0x35040; + pc = 0x25600; + run_25600(); + return; + case 0x35040: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x35074; continue; } r29 = r30 + r0; - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r19 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r18 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r17 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; r2 = r0 + r0; r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2b874: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r5 = r5 + 12832; - /* Next insn is delay slot */ - r31=0x2b88c; - pc=0x3b800; - run_3b800(); return; - case 0x2b88c: + case 0x35074: + r4 = readPages[(r30 + 36) >>> 12][((r30 + 36) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x35080; + pc = 0x26000; + run_26000(); + return; + case 0x35080: r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2b94c; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x350f0; continue; } - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; + r2 = 6 << 16; + r3 = r2 + -24536; + r3 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; r17 = r29 + r0; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r3 = r3 + 7; r3 = r3 >>> 3; r3 = r3 << 3; r29 = r29 - r3; r3 = r29 + 16; + r5 = readPages[(r2 + -24536) >>> 12][((r2 + -24536) >>> 2) & 0x3ff]; r4 = r3 + r0; - /* Next insn is delay slot */ - r31=0x2b8c8; - pc=0x42e00; - run_42e00(); return; - case 0x2b8c8: + /* Next insn is delay slot */ + r31 = 0x350c0; + pc = 0x48000; + run_48000(); + return; + case 0x350c0: r3 = r2 + r0; - r19 = readPages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff]; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + r19 = readPages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff]; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r2 = r30 + 16; r4 = r16 + r0; r5 = r3 + r0; - writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x2b8ec; - pc=0x19c00; - run_19c00(); return; - case 0x2b8ec: - writePages[(r28+-32244)>>>12][((r28+-32244)>>>2)&0x3ff] = r19; - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + writePages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x350e4; + pc = 0x1f600; + run_1f600(); + return; + case 0x350e4: + writePages[(r28 + -32692) >>> 12][((r28 + -32692) >>> 2) & 0x3ff] = r19; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r29 = r17 + r0; - case 0x2b8f8: - r2 = readPages[(r28+-32764)>>>12][((r28+-32764)>>>2)&0x3ff]; + case 0x350f0: + r2 = readPages[(r28 + -32768) >>> 12][((r28 + -32768) >>> 2) & 0x3ff]; r2 = r2 + 1; - writePages[(r28+-32764)>>>12][((r28+-32764)>>>2)&0x3ff] = r2; + writePages[(r28 + -32768) >>> 12][((r28 + -32768) >>> 2) & 0x3ff] = r2; r29 = r30 + r0; - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r19 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r18 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r17 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; r2 = r0 + 1; r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2b934: - r4 = 7 << 16; - r4 = r4 + -1244; - /* Next insn is delay slot */ - r31=0x2b944; - pc=0x1b200; - run_1b200(); return; - case 0x2b944: - /* Next insn is delay slot */ - pc=0x2b834; - continue; - case 0x2b94c: - r4 = 7 << 16; - r4 = r4 + -6824; - /* Next insn is delay slot */ - r31=0x2b95c; - pc=0x1b000; - run_1b000(); return; - case 0x2b95c: - /* Next insn is delay slot */ - pc=0x2b8f8; - continue; - case 0x2ba00: - pc=0x2ba00; + case 0x3512c: + r5 = 6 << 16; + r4 = r0 + -3; + r5 = r5 + -29636; + /* Next insn is delay slot */ + r31 = 0x35140; + pc = 0x20600; + run_20600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x35140: + /* Next insn is delay slot */ + pc = 0x35034; + continue; + case 0x35200: + pc = 0x35200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2ba00() throws ExecutionException { /* 0x2ba00 - 0x2bc00 */ + + private final void run_35200() throws ExecutionException { /* 0x35200 - 0x35400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2ba00: + for (;;) { + switch (pc) { + case 0x35200: r29 = r29 + -24; - r4 = r0 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x2ba14; - pc=0x1fc00; - run_1fc00(); return; - case 0x2ba14: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2ba60; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x35210; + pc = 0x25800; + run_25800(); + return; + case 0x35210: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x35264; continue; } - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2ba60; + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x35264; continue; } - r2 = readPages[(r28+-30840)>>>12][((r28+-30840)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2ba74; + r2 = readPages[(r28 + -31396) >>> 12][((r28 + -31396) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x35278; continue; } - r4 = 7 << 16; - r4 = r4 + -1204; - /* Next insn is delay slot */ - r31=0x2ba4c; - pc=0x1ac00; - run_1ac00(); return; - case 0x2ba4c: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + -29596; + /* Next insn is delay slot */ + r31 = 0x35250; + pc = 0x20600; + run_20600(); + return; + case 0x35250: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r2 = r0 + r0; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2ba60: + case 0x35264: r2 = r0 + r0; - case 0x2ba64: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + case 0x35268: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2ba74: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x2ba80; - pc=0x17a00; - run_17a00(); return; - case 0x2ba80: - writePages[(r28+-30840)>>>12][((r28+-30840)>>>2)&0x3ff] = r2; + case 0x35278: + r4 = 6 << 16; + r4 = r4 + -24536; + /* Next insn is delay slot */ + r31 = 0x35288; + pc = 0x1c800; + run_1c800(); + return; + case 0x35288: + writePages[(r28 + -31396) >>> 12][((r28 + -31396) >>> 2) & 0x3ff] = r2; r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2ba64; + /* Next insn is delay slot */ + pc = 0x35268; continue; - case 0x2bc00: - pc=0x2bc00; + case 0x35400: + pc = 0x35400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2bc00() throws ExecutionException { /* 0x2bc00 - 0x2be00 */ + + private final void run_35400() throws ExecutionException { /* 0x35400 - 0x35600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2bc00: - r29 = r29 + -80; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r17; - r17 = 7 << 16; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r16; - r16 = r17 + 30664; - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r31; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r18; - r2 = r2 & 16; - r18 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2bce4; + for (;;) { + switch (pc) { + case 0x35400: + r29 = r29 + -32; + r4 = r29 + 16; + r5 = r0 + r0; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x35418; + pc = 0x25000; + run_25000(); + return; + case 0x35418: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x35434; + continue; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x35434: + /* Next insn is delay slot */ + r31 = 0x3543c; + pc = 0x25c00; + run_25c00(); + return; + case 0x3543c: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r4 = tmp; + r3 = r0 + 61; + if (r4 == r3) { + /* Next insn is delay slot */ + pc = 0x35474; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x35460; + pc = 0x20600; + run_20600(); + return; + case 0x35460: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x35474: + r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r5 = r2 + r0; + r6 = r0 + 3; + /* Next insn is delay slot */ + r31 = 0x35488; + pc = 0x20400; + run_20400(); + return; + case 0x35488: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x35600: + pc = 0x35600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_35600() throws ExecutionException { /* 0x35600 - 0x35800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x35600: + r29 = r29 + -104; + r4 = r29 + 64; + writePages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x35614; + pc = 0x1a800; + run_1a800(); + return; + case 0x35614: + /* Next insn is delay slot */ + r31 = 0x3561c; + pc = 0x25a00; + run_25a00(); + return; + case 0x3561c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x356c4; continue; } r4 = r29 + 40; - /* Next insn is delay slot */ - r31=0x2bc3c; - pc=0x16000; - run_16000(); return; - case 0x2bc3c: - /* Next insn is delay slot */ - r31=0x2bc44; - pc=0x20000; - run_20000(); return; - case 0x2bc44: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2bd34; + /* Next insn is delay slot */ + r31 = 0x35630; + pc = 0x1a800; + run_1a800(); + return; + case 0x35630: + /* Next insn is delay slot */ + r31 = 0x35638; + pc = 0x25a00; + run_25a00(); + return; + case 0x35638: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x356f4; continue; } + case 0x35640: + r2 = 6 << 16; + r2 = readPages[(r2 + -10224) >>> 12][((r2 + -10224) >>> 2) & 0x3ff]; r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2bc58; - pc=0x16000; - run_16000(); return; - case 0x2bc58: - /* Next insn is delay slot */ - r31=0x2bc60; - pc=0x20000; - run_20000(); return; - case 0x2bc60: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2bd20; + addr = r2 + 8; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + writePages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x35660; + pc = 0x2ce00; + run_2ce00(); + return; + case 0x35660: + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x35684; continue; } - case 0x2bc68: - r2 = readPages[(r17+30664)>>>12][((r17+30664)>>>2)&0x3ff]; - addr=r2+8; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r17 = tmp; - case 0x2bc74: - r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r16 = r18 + 1; - r18 = r18 & r2; - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - if(r18 != r2) { - /* Next insn is delay slot */ - pc=0x2bc9c; - continue; - } - /* Next insn is delay slot */ - pc=0x2bcc4; + /* Next insn is delay slot */ + pc = 0x3571c; continue; - case 0x2bc98: - r16 = r5 + r0; - case 0x2bc9c: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2bca8; - pc=0x25e00; - run_25e00(); return; - case 0x2bca8: - r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r5 = r16 + 1; - r16 = r16 & r3; - r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - if(r16 != r3) { - /* Next insn is delay slot */ - pc=0x2bc98; + case 0x35678: + r4 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x35684; + pc = 0x22000; + run_22000(); + return; + case 0x35684: + r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r3 = r2 + 1; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + r2 = r2 & r3; + r3 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x35678; continue; } - case 0x2bcc4: - r31 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r18 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r17 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r16 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; + r31 = readPages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff]; r2 = r0 + 1; - r29 = r29 + 80; - /* Next insn is delay slot */ - pc=r31; + r29 = r29 + 104; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2bce4: - r4 = 7 << 16; - r4 = r4 + -6964; - /* Next insn is delay slot */ - r31=0x2bcf4; - pc=0x1b000; - run_1b000(); return; - case 0x2bcf4: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r31 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r2 = r2 | 16; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - r18 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r17 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r16 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 80; - /* Next insn is delay slot */ - pc=r31; + case 0x356c4: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x356d8; + pc = 0x20600; + run_20600(); return; - case 0x2bd20: - /* Next insn is delay slot */ - r31=0x2bd28; - pc=0x15e00; - run_15e00(); return; - case 0x2bd28: - r17 = r2 + r0; - /* Next insn is delay slot */ - pc=0x2bc74; - continue; - case 0x2bd34: - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x2bd44; - pc=0x1b000; - run_1b000(); return; - case 0x2bd44: - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2bd50; - pc=0x16000; - run_16000(); return; - case 0x2bd50: - /* Next insn is delay slot */ - r31=0x2bd58; - pc=0x20000; - run_20000(); return; - case 0x2bd58: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2bc68; + case 0x356d8: + r4 = r29 + 40; + /* Next insn is delay slot */ + r31 = 0x356e4; + pc = 0x1a800; + run_1a800(); + return; + case 0x356e4: + /* Next insn is delay slot */ + r31 = 0x356ec; + pc = 0x25a00; + run_25a00(); + return; + case 0x356ec: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x35640; continue; } - /* Next insn is delay slot */ - pc=0x2bd20; - continue; - case 0x2be00: - pc=0x2be00; + case 0x356f4: + r4 = r29 + 88; + /* Next insn is delay slot */ + r31 = 0x35700; + pc = 0x1a600; + run_1a600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x35700: + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x3570c; + pc = 0x2ce00; + run_2ce00(); + return; + case 0x3570c: + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x35684; + continue; + } + case 0x3571c: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29636; + /* Next insn is delay slot */ + r31 = 0x35730; + pc = 0x20600; + run_20600(); + return; + case 0x35730: + r31 = readPages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 104; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x35800: + pc = 0x35800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2be00() throws ExecutionException { /* 0x2be00 - 0x2c000 */ + + private final void run_35800() throws ExecutionException { /* 0x35800 - 0x35a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2be00: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + for (;;) { + switch (pc) { + case 0x35800: + r29 = r29 + -48; + r4 = r29 + 16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x35814; + pc = 0x1a800; + run_1a800(); + return; + case 0x35814: + r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + if (r4 < 0) { + /* Next insn is delay slot */ + pc = 0x35840; + continue; + } + /* Next insn is delay slot */ + r31 = 0x3582c; + pc = 0x2ae00; + run_2ae00(); + return; + case 0x3582c: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x35840: + r5 = 5 << 16; + r4 = r0 + -3; + r5 = r5 + 29852; + /* Next insn is delay slot */ + r31 = 0x35854; + pc = 0x20600; + run_20600(); + return; + case 0x35854: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = r0 + 1; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x35a00: + pc = 0x35a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_35a00() throws ExecutionException { /* 0x35a00 - 0x35c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x35a00: + r29 = r29 + -32; + r4 = r29 + 16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x35a14; + pc = 0x1a600; + run_1a600(); + return; + case 0x35a14: + /* Next insn is delay slot */ + r31 = 0x35a1c; + pc = 0x25a00; + run_25a00(); + return; + case 0x35a1c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x35a48; + continue; + } + addr = r29 + 19; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r5 = tmp; + r4 = 6 << 16; + r4 = r4 + -15284; + /* Next insn is delay slot */ + r31 = 0x35a38; + pc = 0x32200; + run_32200(); + return; + case 0x35a38: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x35a48: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x35a5c; + pc = 0x20600; + run_20600(); + return; + case 0x35a5c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = r0 + r0; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x35c00: + pc = 0x35c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_35c00() throws ExecutionException { /* 0x35c00 - 0x35e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x35c00: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r29 = r29 + -288; r3 = r0 + 60; - writePages[(r29+284)>>>12][((r29+284)>>>2)&0x3ff] = r31; - writePages[(r29+280)>>>12][((r29+280)>>>2)&0x3ff] = r18; - writePages[(r29+276)>>>12][((r29+276)>>>2)&0x3ff] = r17; - writePages[(r29+272)>>>12][((r29+272)>>>2)&0x3ff] = r16; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2be88; + writePages[(r29 + 284) >>> 12][((r29 + 284) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 280) >>> 12][((r29 + 280) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 276) >>> 12][((r29 + 276) >>> 2) & 0x3ff] = r16; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x35c80; continue; } r3 = r0 + 34; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2be88; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x35c80; continue; } - r16 = readPages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff]; - r17 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x2be40; - pc=0x1f400; - run_1f400(); return; - case 0x2be40: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2bf34; + r16 = readPages[(r28 + -32696) >>> 12][((r28 + -32696) >>> 2) & 0x3ff]; + r17 = readPages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x35c3c; + pc = 0x25400; + run_25400(); + return; + case 0x35c3c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x35ce0; continue; } - case 0x2be48: + case 0x35c44: r2 = r29 + 16; - writePages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x2be58; - pc=0x1b600; - run_1b600(); return; - case 0x2be58: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2be64; - continue; - } - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r17; - case 0x2be64: - r31 = readPages[(r29+284)>>>12][((r29+284)>>>2)&0x3ff]; - r18 = readPages[(r29+280)>>>12][((r29+280)>>>2)&0x3ff]; - r17 = readPages[(r29+276)>>>12][((r29+276)>>>2)&0x3ff]; - writePages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff] = r16; - r2 = r0 + 1; - r16 = readPages[(r29+272)>>>12][((r29+272)>>>2)&0x3ff]; - r29 = r29 + 288; - /* Next insn is delay slot */ - pc=r31; + writePages[(r28 + -32696) >>> 12][((r28 + -32696) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x35c54; + pc = 0x21600; + run_21600(); return; - case 0x2be88: - r4 = r0 + 1; - /* Next insn is delay slot */ - r31=0x2be94; - pc=0x1fc00; - run_1fc00(); return; - case 0x2be94: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2bebc; + case 0x35c54: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x35c60; continue; } - r31 = readPages[(r29+284)>>>12][((r29+284)>>>2)&0x3ff]; - r18 = readPages[(r29+280)>>>12][((r29+280)>>>2)&0x3ff]; - r17 = readPages[(r29+276)>>>12][((r29+276)>>>2)&0x3ff]; - r16 = readPages[(r29+272)>>>12][((r29+272)>>>2)&0x3ff]; + writePages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff] = r17; + case 0x35c60: + r31 = readPages[(r29 + 284) >>> 12][((r29 + 284) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 280) >>> 12][((r29 + 280) >>> 2) & 0x3ff]; + writePages[(r28 + -32696) >>> 12][((r28 + -32696) >>> 2) & 0x3ff] = r16; + r2 = r0 + 1; + r16 = readPages[(r29 + 276) >>> 12][((r29 + 276) >>> 2) & 0x3ff]; + r29 = r29 + 288; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x35c80: + r4 = r29 + 16; + /* Next insn is delay slot */ + r31 = 0x35c8c; + pc = 0x25600; + run_25600(); + return; + case 0x35c8c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x35cb0; + continue; + } + r31 = readPages[(r29 + 284) >>> 12][((r29 + 284) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 280) >>> 12][((r29 + 280) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 276) >>> 12][((r29 + 276) >>> 2) & 0x3ff]; r2 = r0 + r0; r29 = r29 + 288; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2bebc: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r16 = r29 + 16; - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r16 + r0; - r17 = readPages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff]; - r18 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x2bedc; - pc=0x19000; - run_19000(); return; - case 0x2bedc: - r2 = 7 << 16; - r2 = r2 + 12712; - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; - writePages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x2bef4; - pc=0x1b600; - run_1b600(); return; - case 0x2bef4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2bf50; - continue; - } - r4 = r17 + r0; - r5 = r16 + r0; - r6 = r0 + 256; - /* Next insn is delay slot */ - r31=0x2bf10; - pc=0x48fdc; - run_48e00(); return; - case 0x2bf10: - writePages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff] = r17; - r2 = r0 + 1; - case 0x2bf18: - r31 = readPages[(r29+284)>>>12][((r29+284)>>>2)&0x3ff]; - r18 = readPages[(r29+280)>>>12][((r29+280)>>>2)&0x3ff]; - r17 = readPages[(r29+276)>>>12][((r29+276)>>>2)&0x3ff]; - r16 = readPages[(r29+272)>>>12][((r29+272)>>>2)&0x3ff]; + case 0x35cb0: + r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x35cbc; + pc = 0x26000; + run_26000(); + return; + case 0x35cbc: + r4 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x35cc8; + pc = 0x34200; + run_34200(); + return; + case 0x35cc8: + r31 = readPages[(r29 + 284) >>> 12][((r29 + 284) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 280) >>> 12][((r29 + 280) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 276) >>> 12][((r29 + 276) >>> 2) & 0x3ff]; r29 = r29 + 288; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2bf34: - /* Next insn is delay slot */ - r31=0x2bf3c; - pc=0x19200; - run_19200(); return; - case 0x2bf3c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2be48; + case 0x35ce0: + /* Next insn is delay slot */ + r31 = 0x35ce8; + pc = 0x1e200; + run_1e200(); + return; + case 0x35ce8: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x35c44; continue; } - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x2be48; + writePages[(r28 + -31272) >>> 12][((r28 + -31272) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x35c44; continue; - case 0x2bf50: - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r18; - writePages[(r28+-32344)>>>12][((r28+-32344)>>>2)&0x3ff] = r17; - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2bf18; - continue; - case 0x2c000: - pc=0x2c000; + case 0x35e00: + pc = 0x35e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2c000() throws ExecutionException { /* 0x2c000 - 0x2c200 */ + + private final void run_35e00() throws ExecutionException { /* 0x35e00 - 0x36000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2c000: + for (;;) { + switch (pc) { + case 0x35e00: r29 = r29 + -24; - r4 = r0 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x2c014; - pc=0x1fc00; - run_1fc00(); return; - case 0x2c014: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2c02c; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x35e10; + pc = 0x25800; + run_25800(); + return; + case 0x35e10: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x35e2c; continue; } - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2c040; + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x35e40; continue; } - case 0x2c02c: + case 0x35e2c: r2 = r0 + r0; - case 0x2c030: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + case 0x35e30: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2c040: - /* Next insn is delay slot */ - r31=0x2c048; - pc=0x26c00; - run_26c00(); return; - case 0x2c048: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2c02c; - continue; - } - /* Next insn is delay slot */ - r31=0x2c058; - pc=0x20000; - run_20000(); return; - case 0x2c058: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2c08c; - continue; - } - /* Next insn is delay slot */ - r31=0x2c068; - pc=0x1f400; - run_1f400(); return; - case 0x2c068: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2c02c; - continue; - } - /* Next insn is delay slot */ - r31=0x2c078; - pc=0x26800; - run_26800(); return; - case 0x2c078: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2c0b8; - continue; - } - case 0x2c080: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2c030; - continue; - case 0x2c08c: - /* Next insn is delay slot */ - r31=0x2c094; - pc=0x26a00; - run_26a00(); return; - case 0x2c094: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2c080; - continue; - } - r4 = 7 << 16; - r4 = r4 + -1164; - /* Next insn is delay slot */ - r31=0x2c0ac; - pc=0x1ac00; - run_1ac00(); return; - case 0x2c0ac: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2c030; - continue; - case 0x2c0b8: - r4 = 7 << 16; - r4 = r4 + -1100; - /* Next insn is delay slot */ - r31=0x2c0c8; - pc=0x1b000; - run_1b000(); return; - case 0x2c0c8: - /* Next insn is delay slot */ - pc=0x2c02c; - continue; - case 0x2c200: - pc=0x2c200; + case 0x35e40: + /* Next insn is delay slot */ + r31 = 0x35e48; + pc = 0x2ba00; + run_2ba00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x35e48: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x35e2c; + continue; + } + /* Next insn is delay slot */ + r31 = 0x35e58; + pc = 0x25a00; + run_25a00(); + return; + case 0x35e58: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x35e90; + continue; + } + /* Next insn is delay slot */ + r31 = 0x35e68; + pc = 0x2b800; + run_2b800(); + return; + case 0x35e68: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x35e84; + continue; + } + r2 = 6 << 16; + r2 = readPages[(r2 + -10256) >>> 12][((r2 + -10256) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x35ecc; + continue; + } + case 0x35e84: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x35e30; + continue; + case 0x35e90: + /* Next insn is delay slot */ + r31 = 0x35e98; + pc = 0x25400; + run_25400(); + return; + case 0x35e98: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x35e2c; + continue; + } + /* Next insn is delay slot */ + r31 = 0x35ea8; + pc = 0x2b600; + run_2b600(); + return; + case 0x35ea8: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x35e84; + continue; + } + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -29492; + /* Next insn is delay slot */ + r31 = 0x35ec4; + pc = 0x20600; + run_20600(); + return; + case 0x35ec4: + /* Next insn is delay slot */ + pc = 0x35e2c; + continue; + case 0x35ecc: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + -29556; + /* Next insn is delay slot */ + r31 = 0x35ee0; + pc = 0x20600; + run_20600(); + return; + case 0x35ee0: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x35e30; + continue; + case 0x36000: + pc = 0x36000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2c200() throws ExecutionException { /* 0x2c200 - 0x2c400 */ + + private final void run_36000() throws ExecutionException { /* 0x36000 - 0x36200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2c200: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x36000: + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x36020; + continue; + } + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x36020: r29 = r29 + -48; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2c228; - continue; - } - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2c228: r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2c234; - pc=0x16000; - run_16000(); return; - case 0x2c234: - r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x36034; + pc = 0x1a800; + run_1a800(); + return; + case 0x36034: + r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r2 = r4 + 128; - r2 = (r2&0xffffffffL) < (384&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2c270; + r2 = (r2 & 0xffffffffL) < (384 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x36070; continue; } - case 0x2c24c: r4 = r4 << 24; r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x2c25c; - pc=0x26600; - run_26600(); return; - case 0x2c25c: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + /* Next insn is delay slot */ + r31 = 0x3605c; + pc = 0x2b000; + run_2b000(); + return; + case 0x3605c: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2c270: - r4 = 7 << 16; - r4 = r4 + -6936; - /* Next insn is delay slot */ - r31=0x2c280; - pc=0x1b000; - run_1b000(); return; - case 0x2c280: - r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x2c24c; - continue; - case 0x2c400: - pc=0x2c400; + case 0x36070: + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29728; + /* Next insn is delay slot */ + r31 = 0x36084; + pc = 0x20600; + run_20600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2c400() throws ExecutionException { /* 0x2c400 - 0x2c600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2c400: - r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - case 0x2c408: - /* Next insn is delay slot */ - r31=0x2c410; - pc=0x15e00; - run_15e00(); return; - case 0x2c410: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2c41c; - pc=0x25e00; - run_25e00(); return; - case 0x2c41c: - /* Next insn is delay slot */ - r31=0x2c424; - pc=0x20000; - run_20000(); return; - case 0x2c424: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2c408; - continue; - } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2c600: - pc=0x2c600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2c600() throws ExecutionException { /* 0x2c600 - 0x2c800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2c600: - r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - case 0x2c608: - /* Next insn is delay slot */ - r31=0x2c610; - pc=0x15e00; - run_15e00(); return; - case 0x2c610: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2c61c; - pc=0x26000; - run_26000(); return; - case 0x2c61c: - /* Next insn is delay slot */ - r31=0x2c624; - pc=0x20000; - run_20000(); return; - case 0x2c624: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2c608; - continue; - } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2c800: - pc=0x2c800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2c800() throws ExecutionException { /* 0x2c800 - 0x2ca00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2c800: - r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - case 0x2c808: - /* Next insn is delay slot */ - r31=0x2c810; - pc=0x15e00; - run_15e00(); return; - case 0x2c810: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2c81c; - pc=0x26200; - run_26200(); return; - case 0x2c81c: - /* Next insn is delay slot */ - r31=0x2c824; - pc=0x20000; - run_20000(); return; - case 0x2c824: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2c808; - continue; - } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2ca00: - pc=0x2ca00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2ca00() throws ExecutionException { /* 0x2ca00 - 0x2cc00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2ca00: - r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - case 0x2ca08: - /* Next insn is delay slot */ - r31=0x2ca10; - pc=0x15e00; - run_15e00(); return; - case 0x2ca10: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2ca1c; - pc=0x26400; - run_26400(); return; - case 0x2ca1c: - /* Next insn is delay slot */ - r31=0x2ca24; - pc=0x20000; - run_20000(); return; - case 0x2ca24: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2ca08; - continue; - } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2cc00: - pc=0x2cc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2cc00() throws ExecutionException { /* 0x2cc00 - 0x2ce00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2cc00: - r2 = 7 << 16; - r29 = r29 + -32; - r4 = r2 + 30700; - r5 = r0 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r17 = readPages[(r2+30700)>>>12][((r2+30700)>>>2)&0x3ff]; - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2cc2c; - pc=0x17200; - run_17200(); return; - case 0x2cc2c: - /* Next insn is delay slot */ - r31=0x2cc34; - pc=0x1b600; - run_1b600(); return; - case 0x2cc34: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2cc4c; - continue; - } - r4 = r16 + 30700; - r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2cc4c; - pc=0x17200; - run_17200(); return; - case 0x2cc4c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2ce00: - pc=0x2ce00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2ce00() throws ExecutionException { /* 0x2ce00 - 0x2d000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2ce00: - r2 = 7 << 16; - r29 = r29 + -32; - r4 = r2 + 30700; - r5 = r0 + 1; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r17 = readPages[(r2+30700)>>>12][((r2+30700)>>>2)&0x3ff]; - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2ce2c; - pc=0x17200; - run_17200(); return; - case 0x2ce2c: - /* Next insn is delay slot */ - r31=0x2ce34; - pc=0x1b600; - run_1b600(); return; - case 0x2ce34: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2ce4c; - continue; - } - r4 = r16 + 30700; - r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2ce4c; - pc=0x17200; - run_17200(); return; - case 0x2ce4c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2d000: - pc=0x2d000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2d000() throws ExecutionException { /* 0x2d000 - 0x2d200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2d000: - r2 = 7 << 16; - r29 = r29 + -32; - r4 = r2 + 30704; - r5 = r0 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r17 = readPages[(r2+30704)>>>12][((r2+30704)>>>2)&0x3ff]; - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2d02c; - pc=0x17200; - run_17200(); return; - case 0x2d02c: - /* Next insn is delay slot */ - r31=0x2d034; - pc=0x1b600; - run_1b600(); return; - case 0x2d034: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2d04c; - continue; - } - r4 = r16 + 30704; - r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2d04c; - pc=0x17200; - run_17200(); return; - case 0x2d04c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2d200: - pc=0x2d200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2d200() throws ExecutionException { /* 0x2d200 - 0x2d400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2d200: - r29 = r29 + -32; - r4 = r29 + 16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x2d218; - pc=0x1e400; - run_1e400(); return; - case 0x2d218: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2d238; - continue; - } - r2 = r0 + r0; - case 0x2d224: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2d238: - r5 = 7 << 16; - r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r4 = r29 + 20; - r5 = r5 + 16944; - r7 = r0 + r0; - /* Next insn is delay slot */ - r31=0x2d254; - pc=0x31200; - run_31200(); return; - case 0x2d254: - r2 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2d2d0; - continue; - } - r3 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2d2b8; - continue; - } - case 0x2d274: - r16 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r16 = r16 >>> 4; - r16 = r16 & 1; - case 0x2d284: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 32; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x2d2f4; - continue; - } - case 0x2d294: - r2 = r0 + 123; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x2d2dc; - continue; - } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r16 << 1; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2d2b8: - r3 = readPages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff]; - r3 = r3 + 1; - writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x2d274; - continue; - case 0x2d2d0: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x2d284; - continue; - case 0x2d2dc: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x2d2e8; - pc=0x19a00; - run_19a00(); return; - case 0x2d2e8: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2d224; - continue; - case 0x2d2f4: - /* Next insn is delay slot */ - r31=0x2d2fc; - pc=0x1c000; - run_1c000(); return; - case 0x2d2fc: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - /* Next insn is delay slot */ - pc=0x2d294; - continue; - case 0x2d400: - pc=0x2d400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2d400() throws ExecutionException { /* 0x2d400 - 0x2d600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2d400: - r4 = 7 << 16; - r29 = r29 + -40; - r4 = r4 + -1076; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x2d41c; - pc=0x1b000; - run_1b000(); return; - case 0x2d41c: - r16 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r4 = r29 + 16; - r5 = r16 + r0; - r6 = r0 + 16; - /* Next insn is delay slot */ - r31=0x2d434; - pc=0x48fdc; - run_48e00(); return; - case 0x2d434: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r2 = 7 << 16; - r2 = r2 + -7236; - r2 = r3 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r2 & 64; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2d4f4; - continue; - } - r6 = 7 << 16; - r4 = r16 + r0; - r7 = r0 + r0; - r6 = r6 + 6068; - case 0x2d468: - r5 = 7 << 16; - r5 = r5 + -1380; - /* Next insn is delay slot */ - r31=0x2d478; - pc=0x2e400; - run_2e400(); return; - case 0x2d478: - /* Next insn is delay slot */ - r31=0x2d480; - pc=0x1b600; - run_1b600(); return; - case 0x2d480: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2d4bc; - continue; - } - r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2d494; - pc=0x2e600; - run_2e600(); return; - case 0x2d494: - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r3 = 7 << 16; - r3 = r3 + 12764; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2d4bc: - r4 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x2d4c8; - pc=0x2e600; - run_2e600(); return; - case 0x2d4c8: - r4 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r5 = r29 + 16; - r6 = r0 + 16; - /* Next insn is delay slot */ - r31=0x2d4dc; - pc=0x48fdc; - run_48e00(); return; - case 0x2d4dc: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2d4f4: - /* Next insn is delay slot */ - r31=0x2d4fc; - pc=0x1ec00; - run_1ec00(); return; - case 0x2d4fc: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x2d508; - pc=0x17a00; - run_17a00(); return; - case 0x2d508: - r6 = r2 + r0; - r4 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r7 = r0 + 1; - /* Next insn is delay slot */ - pc=0x2d468; - continue; - case 0x2d600: - pc=0x2d600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2d600() throws ExecutionException { /* 0x2d600 - 0x2d800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2d600: - r29 = r29 + -32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x2d61c; - pc=0x15e00; - run_15e00(); return; - case 0x2d61c: - r17 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2d628; - pc=0x20000; - run_20000(); return; - case 0x2d628: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2d738; - continue; - } - r2 = 7 << 16; - r17 = r17 << 24; - r2 = r2 + 12716; - r18 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; - r17 = r17 >> 24; - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; - r16 = r0 + 34; - /* Next insn is delay slot */ - pc=0x2d678; - continue; - case 0x2d654: - /* Next insn is delay slot */ - r31=0x2d65c; - pc=0x15e00; - run_15e00(); return; - case 0x2d65c: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2d668; - pc=0x25e00; - run_25e00(); return; - case 0x2d668: - /* Next insn is delay slot */ - r31=0x2d670; - pc=0x20000; - run_20000(); return; - case 0x2d670: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2d714; - continue; - } - case 0x2d678: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x2d654; - continue; - } - /* Next insn is delay slot */ - r31=0x2d690; - pc=0x1c600; - run_1c600(); return; - case 0x2d690: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x2d6dc; - continue; - } - case 0x2d6a0: - if(r4 == r16) { - /* Next insn is delay slot */ - pc=0x2d6fc; - continue; - } - /* Next insn is delay slot */ - r31=0x2d6b0; - pc=0x18c00; - run_18c00(); return; - case 0x2d6b0: - r4 = r2 ^ r17; + case 0x36084: + r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r4 = r4 << 24; r4 = r4 >> 24; - /* Next insn is delay slot */ - r31=0x2d6c4; - pc=0x25e00; - run_25e00(); return; - case 0x2d6c4: - /* Next insn is delay slot */ - r31=0x2d6cc; - pc=0x1c600; - run_1c600(); return; - case 0x2d6cc: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x2d6a0; - continue; - } - case 0x2d6dc: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r0 + 3; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x3609c; + pc = 0x2b000; + run_2b000(); return; - case 0x2d6fc: - /* Next insn is delay slot */ - r31=0x2d704; - pc=0x1c000; - run_1c000(); return; - case 0x2d704: - /* Next insn is delay slot */ - r31=0x2d70c; - pc=0x20000; - run_20000(); return; - case 0x2d70c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2d678; - continue; - } - case 0x2d714: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r18; - r2 = r0 + 1; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + case 0x3609c: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2d738: - r4 = 7 << 16; - r4 = r4 + -6980; - /* Next insn is delay slot */ - r31=0x2d748; - pc=0x1b000; - run_1b000(); return; - case 0x2d748: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + case 0x36200: + pc = 0x36200; return; - case 0x2d800: - pc=0x2d800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2d800() throws ExecutionException { /* 0x2d800 - 0x2da00 */ + + private final void run_36200() throws ExecutionException { /* 0x36200 - 0x36400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2d800: - r2 = 7 << 16; - r29 = r29 + -32; - r2 = r2 + 12724; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r17 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; - r16 = r0 + 34; - /* Next insn is delay slot */ - pc=0x2d850; - continue; - case 0x2d82c: - /* Next insn is delay slot */ - r31=0x2d834; - pc=0x15e00; - run_15e00(); return; - case 0x2d834: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2d840; - pc=0x25e00; - run_25e00(); return; - case 0x2d840: - /* Next insn is delay slot */ - r31=0x2d848; - pc=0x20000; - run_20000(); return; - case 0x2d848: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2d8e0; - continue; - } - case 0x2d850: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x2d82c; - continue; - } - /* Next insn is delay slot */ - r31=0x2d868; - pc=0x1c600; - run_1c600(); return; - case 0x2d868: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x2d8ac; - continue; - } - case 0x2d878: - if(r4 == r16) { - /* Next insn is delay slot */ - pc=0x2d8c8; - continue; - } - /* Next insn is delay slot */ - r31=0x2d888; - pc=0x18c00; - run_18c00(); return; - case 0x2d888: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2d894; - pc=0x25e00; - run_25e00(); return; - case 0x2d894: - /* Next insn is delay slot */ - r31=0x2d89c; - pc=0x1c600; - run_1c600(); return; - case 0x2d89c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x2d878; - continue; - } - case 0x2d8ac: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 3; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2d8c8: - /* Next insn is delay slot */ - r31=0x2d8d0; - pc=0x1c000; - run_1c000(); return; - case 0x2d8d0: - /* Next insn is delay slot */ - r31=0x2d8d8; - pc=0x20000; - run_20000(); return; - case 0x2d8d8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2d850; - continue; - } - case 0x2d8e0: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r17; - r2 = r0 + 1; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2da00: - pc=0x2da00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2da00() throws ExecutionException { /* 0x2da00 - 0x2dc00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2da00: - r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r17 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; - r16 = r0 + 34; - /* Next insn is delay slot */ - pc=0x2da44; - continue; - case 0x2da20: - /* Next insn is delay slot */ - r31=0x2da28; - pc=0x15e00; - run_15e00(); return; - case 0x2da28: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2da34; - pc=0x25e00; - run_25e00(); return; - case 0x2da34: - /* Next insn is delay slot */ - r31=0x2da3c; - pc=0x20000; - run_20000(); return; - case 0x2da3c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2dad4; - continue; - } - case 0x2da44: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x2da20; - continue; - } - /* Next insn is delay slot */ - r31=0x2da5c; - pc=0x1c600; - run_1c600(); return; - case 0x2da5c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x2daa0; - continue; - } - case 0x2da6c: - if(r4 == r16) { - /* Next insn is delay slot */ - pc=0x2dabc; - continue; - } - /* Next insn is delay slot */ - r31=0x2da7c; - pc=0x18c00; - run_18c00(); return; - case 0x2da7c: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2da88; - pc=0x25e00; - run_25e00(); return; - case 0x2da88: - /* Next insn is delay slot */ - r31=0x2da90; - pc=0x1c600; - run_1c600(); return; - case 0x2da90: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x2da6c; - continue; - } - case 0x2daa0: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 3; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2dabc: - /* Next insn is delay slot */ - r31=0x2dac4; - pc=0x1c000; - run_1c000(); return; - case 0x2dac4: - /* Next insn is delay slot */ - r31=0x2dacc; - pc=0x20000; - run_20000(); return; - case 0x2dacc: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2da44; - continue; - } - case 0x2dad4: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r17; - r2 = r0 + 1; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2dc00: - pc=0x2dc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2dc00() throws ExecutionException { /* 0x2dc00 - 0x2de00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2dc00: - r2 = 7 << 16; - r29 = r29 + -32; - r2 = r2 + 12716; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r17 = readPages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r2; - r16 = r0 + 34; - /* Next insn is delay slot */ - pc=0x2dc50; - continue; - case 0x2dc2c: - /* Next insn is delay slot */ - r31=0x2dc34; - pc=0x15e00; - run_15e00(); return; - case 0x2dc34: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2dc40; - pc=0x25e00; - run_25e00(); return; - case 0x2dc40: - /* Next insn is delay slot */ - r31=0x2dc48; - pc=0x20000; - run_20000(); return; - case 0x2dc48: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2dce0; - continue; - } - case 0x2dc50: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x2dc2c; - continue; - } - /* Next insn is delay slot */ - r31=0x2dc68; - pc=0x1c600; - run_1c600(); return; - case 0x2dc68: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x2dcac; - continue; - } - case 0x2dc78: - if(r4 == r16) { - /* Next insn is delay slot */ - pc=0x2dcc8; - continue; - } - /* Next insn is delay slot */ - r31=0x2dc88; - pc=0x18c00; - run_18c00(); return; - case 0x2dc88: - r4 = r2 + r0; - /* Next insn is delay slot */ - r31=0x2dc94; - pc=0x25e00; - run_25e00(); return; - case 0x2dc94: - /* Next insn is delay slot */ - r31=0x2dc9c; - pc=0x1c600; - run_1c600(); return; - case 0x2dc9c: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x2dc78; - continue; - } - case 0x2dcac: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 3; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2dcc8: - /* Next insn is delay slot */ - r31=0x2dcd0; - pc=0x1c000; - run_1c000(); return; - case 0x2dcd0: - /* Next insn is delay slot */ - r31=0x2dcd8; - pc=0x20000; - run_20000(); return; - case 0x2dcd8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2dc50; - continue; - } - case 0x2dce0: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30592)>>>12][((r28+-30592)>>>2)&0x3ff] = r17; - r2 = r0 + 1; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2de00: - pc=0x2de00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2de00() throws ExecutionException { /* 0x2de00 - 0x2e000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2de00: + for (;;) { + switch (pc) { + case 0x36200: r29 = r29 + -64; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x36224; + pc = 0x23400; + run_23400(); + return; + case 0x36224: + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x3635c; + continue; + } + case 0x36230: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 61; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x36280; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29596; + /* Next insn is delay slot */ + r31 = 0x36254; + pc = 0x20600; + run_20600(); + return; + case 0x36254: + /* Next insn is delay slot */ + r31 = 0x3625c; + pc = 0x23e00; + run_23e00(); + return; + case 0x3625c: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r29 = r29 + 64; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x36280: + /* Next insn is delay slot */ + r31 = 0x36288; + pc = 0x23400; + run_23400(); + return; + case 0x36288: + r18 = 6 << 16; r4 = r29 + 16; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r19; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r18; - r19 = 7 << 16; - r18 = 7 << 16; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r17; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r16; + r20 = 6 << 16; + /* Next insn is delay slot */ + r31 = 0x3629c; + pc = 0x1a800; + run_1a800(); + return; + case 0x3629c: r17 = r0 + r0; - /* Next insn is delay slot */ - r31=0x2de30; - pc=0x16000; - run_16000(); return; - case 0x2de30: - r18 = r18 + -1024; - r19 = r19 + -1016; - case 0x2de38: - /* Next insn is delay slot */ - r31=0x2de40; - pc=0x20000; - run_20000(); return; - case 0x2de40: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2de90; + r19 = 6 << 16; + r18 = r18 + -29468; + r20 = r20 + -29460; + case 0x362ac: + /* Next insn is delay slot */ + r31 = 0x362b4; + pc = 0x25a00; + run_25a00(); + return; + case 0x362b4: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x362fc; continue; } - case 0x2de48: - /* Next insn is delay slot */ - r31=0x2de50; - pc=0x1f400; - run_1f400(); return; - case 0x2de50: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2dea0; + case 0x362bc: + /* Next insn is delay slot */ + r31 = 0x362c4; + pc = 0x25400; + run_25400(); + return; + case 0x362c4: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x36254; continue; } - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; + r16 = readPages[(r19 + -24536) >>> 12][((r19 + -24536) >>> 2) & 0x3ff]; r5 = r18 + r0; - r16 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x2de74; - pc=0x42c00; - run_42c00(); return; - case 0x2de74: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2dec0; + /* Next insn is delay slot */ + r31 = 0x362e0; + pc = 0x47e00; + run_47e00(); + return; + case 0x362e0: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x36338; continue; } r17 = r17 | 1; - /* Next insn is delay slot */ - r31=0x2de88; - pc=0x20000; - run_20000(); return; - case 0x2de88: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2de48; + /* Next insn is delay slot */ + r31 = 0x362f4; + pc = 0x25a00; + run_25a00(); + return; + case 0x362f4: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x362bc; continue; } - case 0x2de90: - r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + case 0x362fc: + r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2dea0; - pc=0x27e00; - run_27e00(); return; - case 0x2dea0: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r19 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r18 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x3630c; + pc = 0x2d800; + run_2d800(); return; - case 0x2dec0: + case 0x3630c: + /* Next insn is delay slot */ + r31 = 0x36314; + pc = 0x24000; + run_24000(); + return; + case 0x36314: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r29 = r29 + 64; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x36338: r4 = r16 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x2ded0; - pc=0x42c00; - run_42c00(); return; - case 0x2ded0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2dee4; + r5 = r20 + r0; + /* Next insn is delay slot */ + r31 = 0x36348; + pc = 0x47e00; + run_47e00(); + return; + case 0x36348: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3636c; continue; } r17 = r17 | 2; - /* Next insn is delay slot */ - pc=0x2de38; + /* Next insn is delay slot */ + pc = 0x362ac; continue; - case 0x2dee4: - r4 = 7 << 16; - r4 = r4 + -1004; - /* Next insn is delay slot */ - r31=0x2def4; - pc=0x1b000; - run_1b000(); return; - case 0x2def4: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r19 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r18 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + case 0x3635c: + /* Next insn is delay slot */ + r31 = 0x36364; + pc = 0x23400; + run_23400(); return; - case 0x2e000: - pc=0x2e000; + case 0x36364: + /* Next insn is delay slot */ + pc = 0x36230; + continue; + case 0x3636c: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -29448; + /* Next insn is delay slot */ + r31 = 0x36380; + pc = 0x20600; + run_20600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x36380: + /* Next insn is delay slot */ + pc = 0x36254; + continue; + case 0x36400: + pc = 0x36400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2e000() throws ExecutionException { /* 0x2e000 - 0x2e200 */ + + private final void run_36400() throws ExecutionException { /* 0x36400 - 0x36600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2e000: - r29 = r29 + -24; - r4 = r0 + 80; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x2e014; - pc=0x17600; - run_17600(); return; - case 0x2e014: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = r28 + -30668; - r5 = r5 + 8940; - r29 = r29 + 24; - writePages[(r28+-30672)>>>12][((r28+-30672)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x30e00; - run_30e00(); return; - case 0x2e200: - pc=0x2e200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2e200() throws ExecutionException { /* 0x2e200 - 0x2e400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2e200: + for (;;) { + switch (pc) { + case 0x36400: r29 = r29 + -32; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x2e214; - pc=0x1c000; - run_1c000(); return; - case 0x2e214: - /* Next insn is delay slot */ - r31=0x2e21c; - pc=0x1f400; - run_1f400(); return; - case 0x2e21c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2e240; - continue; - } - case 0x2e224: - /* Next insn is delay slot */ - r31=0x2e22c; - pc=0x1c800; - run_1c800(); return; - case 0x2e22c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x36414; + pc = 0x23400; + run_23400(); return; - case 0x2e240: - r4 = readPages[(r28+-30668)>>>12][((r28+-30668)>>>2)&0x3ff]; - r6 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; + case 0x36414: + /* Next insn is delay slot */ + r31 = 0x3641c; + pc = 0x25400; + run_25400(); + return; + case 0x3641c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x36440; + continue; + } + case 0x36424: + /* Next insn is delay slot */ + r31 = 0x3642c; + pc = 0x23e00; + run_23e00(); + return; + case 0x3642c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x36440: + r4 = 6 << 16; + r6 = 6 << 16; + r4 = r4 + -19012; r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x2e254; - pc=0x31000; - run_31000(); return; - case 0x2e254: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2e2b4; + r6 = r6 + -24536; + /* Next insn is delay slot */ + r31 = 0x3645c; + pc = 0x38c00; + run_38c00(); + return; + case 0x3645c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x364bc; continue; } - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x2e2b4; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x364bc; continue; } - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 32; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x2e2cc; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x364d8; continue; } - case 0x2e27c: - /* Next insn is delay slot */ - pc=r16; - r31=0x2e284; + case 0x36484: + /* Next insn is delay slot */ + pc = r16; + r31 = 0x3648c; return; - case 0x2e284: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2e224; + case 0x3648c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x36424; continue; } r3 = r0 + 1; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x2e22c; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x3642c; continue; } - /* Next insn is delay slot */ - r31=0x2e2a0; - pc=0x1ce00; - run_1ce00(); return; - case 0x2e2a0: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x364a8; + pc = 0x24000; + run_24000(); + return; + case 0x364a8: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2e2b4: - r4 = 7 << 16; - r4 = r4 + -972; - /* Next insn is delay slot */ - r31=0x2e2c4; - pc=0x1b000; - run_1b000(); return; - case 0x2e2c4: - /* Next insn is delay slot */ - pc=0x2e224; - continue; - case 0x2e2cc: - /* Next insn is delay slot */ - r31=0x2e2d4; - pc=0x1c000; - run_1c000(); return; - case 0x2e2d4: - /* Next insn is delay slot */ - pc=0x2e27c; - continue; - case 0x2e400: - pc=0x2e400; + case 0x364bc: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -29064; + /* Next insn is delay slot */ + r31 = 0x364d0; + pc = 0x20600; + run_20600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x364d0: + /* Next insn is delay slot */ + pc = 0x36424; + continue; + case 0x364d8: + /* Next insn is delay slot */ + r31 = 0x364e0; + pc = 0x23400; + run_23400(); + return; + case 0x364e0: + /* Next insn is delay slot */ + pc = 0x36484; + continue; + case 0x36600: + pc = 0x36600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2e400() throws ExecutionException { /* 0x2e400 - 0x2e600 */ + + private final void run_36600() throws ExecutionException { /* 0x36600 - 0x36800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2e400: - r2 = readPages[(r28+-30664)>>>12][((r28+-30664)>>>2)&0x3ff]; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; - r2 = r2 + 1; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; - writePages[(r28+-30664)>>>12][((r28+-30664)>>>2)&0x3ff] = r2; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r6; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = r7; - writePages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x36600: + r2 = readPages[(r28 + -31292) >>> 12][((r28 + -31292) >>> 2) & 0x3ff]; + r2 = r2 + 2; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; + writePages[(r28 + -31292) >>> 12][((r28 + -31292) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + writePages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff] = r4; + r2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r5; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r6; + writePages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff] = r7; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2e600: - pc=0x2e600; + case 0x36800: + pc = 0x36800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2e600() throws ExecutionException { /* 0x2e600 - 0x2e800 */ + + private final void run_36800() throws ExecutionException { /* 0x36800 - 0x36a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2e600: - r2 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2e618; + for (;;) { + switch (pc) { + case 0x36800: + r2 = readPages[(r28 + -31296) >>> 12][((r28 + -31296) >>> 2) & 0x3ff]; + r2 = r2 + 2; + writePages[(r28 + -31296) >>> 12][((r28 + -31296) >>> 2) & 0x3ff] = r2; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x36a00: + pc = 0x36a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_36a00() throws ExecutionException { /* 0x36a00 - 0x36c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x36a00: + r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x36a18; continue; } - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2e618: - r4 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x3ea00; - run_3ea00(); return; - case 0x2e800: - pc=0x2e800; + case 0x36a18: + r4 = readPages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x44800; + run_44800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x36c00: + pc = 0x36c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2e800() throws ExecutionException { /* 0x2e800 - 0x2ea00 */ + + private final void run_36c00() throws ExecutionException { /* 0x36c00 - 0x36e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2e800: + for (;;) { + switch (pc) { + case 0x36c00: + r3 = r0 + 2; + r2 = 6 << 16; + writePages[(r2 + -11412) >>> 12][((r2 + -11412) >>> 2) & 0x3ff] = r3; + writePages[(r28 + -31292) >>> 12][((r28 + -31292) >>> 2) & 0x3ff] = r3; + r3 = 6 << 16; + r2 = r2 + -11412; + r3 = r3 + -30124; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r3; + r3 = 6 << 16; + r3 = r3 + -24444; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; r3 = r0 + 1; - r2 = 7 << 16; - writePages[(r2+16928)>>>12][((r2+16928)>>>2)&0x3ff] = r3; - writePages[(r28+-30664)>>>12][((r28+-30664)>>>2)&0x3ff] = r3; - r3 = 7 << 16; - r2 = r2 + 16928; - r3 = r3 + 12764; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - r3 = 7 << 16; - r3 = r3 + 6068; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - writePages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=r31; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff] = r2; + writePages[(r28 + -31296) >>> 12][((r28 + -31296) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = r31; return; - case 0x2ea00: - pc=0x2ea00; + case 0x36e00: + pc = 0x36e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2ea00() throws ExecutionException { /* 0x2ea00 - 0x2ec00 */ + + private final void run_36e00() throws ExecutionException { /* 0x36e00 - 0x37000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2ea00: - r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - r6 = r0 + 16; - r7 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x36e00: + r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r6 = 6 << 16; + r7 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r6 = r6 + -26200; r3 = r4 + r0; - r7 = r7 & 272; - if(r7 == r6) { - /* Next insn is delay slot */ - pc=0x2ea24; + if (r7 == r6) { + /* Next insn is delay slot */ + pc = 0x36e24; continue; } - case 0x2ea1c: - /* Next insn is delay slot */ - pc=r31; + case 0x36e1c: + /* Next insn is delay slot */ + pc = r31; return; - case 0x2ea24: - r6 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r4 = r0 + 1; - if(r6 != r4) { - /* Next insn is delay slot */ - pc=0x2ea1c; + case 0x36e24: + r4 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r6 = r0 + 1; + if (r4 != r6) { + /* Next insn is delay slot */ + pc = 0x36e1c; + continue; + } + r6 = readPages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff]; + if (r6 != r4) { + /* Next insn is delay slot */ + pc = 0x36e1c; continue; } r4 = r5 + r0; - r6 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r5 = 7 << 16; - r7 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r5 = r5 + -652; - /* Next insn is delay slot */ - pc=0x3bc00; - run_3bc00(); return; - case 0x2ec00: - pc=0x2ec00; + r6 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r5 = 6 << 16; + r7 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + r5 = r5 + -29024; + /* Next insn is delay slot */ + pc = 0x42000; + run_42000(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x37000: + pc = 0x37000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2ec00() throws ExecutionException { /* 0x2ec00 - 0x2ee00 */ + + private final void run_37000() throws ExecutionException { /* 0x37000 - 0x37200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2ec00: - r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x37000: + r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; r3 = r4 + r0; - r6 = readPages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff]; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x2ec2c; + r6 = readPages[(r2 + 36) >>> 12][((r2 + 36) >>> 2) & 0x3ff]; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x3702c; continue; } - r7 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r6 = r0 + 16; - r7 = r7 & 272; - if(r7 == r6) { - /* Next insn is delay slot */ - pc=0x2ec34; + r6 = 6 << 16; + r7 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r6 = r6 + -26200; + if (r7 == r6) { + /* Next insn is delay slot */ + pc = 0x37034; continue; } - case 0x2ec2c: - /* Next insn is delay slot */ - pc=r31; + case 0x3702c: + /* Next insn is delay slot */ + pc = r31; return; - case 0x2ec34: - r6 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r4 = r0 + 1; - if(r6 == r4) { - /* Next insn is delay slot */ - pc=0x2ec2c; + case 0x37034: + r4 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r6 = r0 + 1; + if (r4 != r6) { + /* Next insn is delay slot */ + pc = 0x3702c; + continue; + } + r6 = readPages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff]; + if (r6 == r4) { + /* Next insn is delay slot */ + pc = 0x3702c; continue; } r4 = r5 + r0; - r6 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r5 = 7 << 16; - r7 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r5 = r5 + -652; - /* Next insn is delay slot */ - pc=0x3bc00; - run_3bc00(); return; - case 0x2ee00: - pc=0x2ee00; + r6 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r5 = 6 << 16; + r7 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + r5 = r5 + -29024; + /* Next insn is delay slot */ + pc = 0x42000; + run_42000(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x37200: + pc = 0x37200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2ee00() throws ExecutionException { /* 0x2ee00 - 0x2f000 */ + + private final void run_37200() throws ExecutionException { /* 0x37200 - 0x37400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2ee00: - r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x37200: + r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; r3 = r4 + r0; - r6 = readPages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff]; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x2ee2c; + r6 = readPages[(r2 + 36) >>> 12][((r2 + 36) >>> 2) & 0x3ff]; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x3722c; continue; } - r7 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r6 = r0 + 16; - r7 = r7 & 272; - if(r7 == r6) { - /* Next insn is delay slot */ - pc=0x2ee34; + r6 = 6 << 16; + r7 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r6 = r6 + -26200; + if (r7 == r6) { + /* Next insn is delay slot */ + pc = 0x37234; continue; } - case 0x2ee2c: - /* Next insn is delay slot */ - pc=r31; + case 0x3722c: + /* Next insn is delay slot */ + pc = r31; return; - case 0x2ee34: - r6 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r4 = r0 + 1; - if(r6 == r4) { - /* Next insn is delay slot */ - pc=0x2ee2c; + case 0x37234: + r4 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r6 = r0 + 1; + if (r4 != r6) { + /* Next insn is delay slot */ + pc = 0x3722c; + continue; + } + r6 = readPages[(r2 + 24) >>> 12][((r2 + 24) >>> 2) & 0x3ff]; + if (r6 == r4) { + /* Next insn is delay slot */ + pc = 0x3722c; continue; } r4 = r5 + r0; - r6 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r5 = 7 << 16; - r7 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r5 = r5 + -652; - /* Next insn is delay slot */ - pc=0x3bc00; - run_3bc00(); return; - case 0x2f000: - pc=0x2f000; + r6 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r5 = 6 << 16; + r7 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + r5 = r5 + -29024; + /* Next insn is delay slot */ + pc = 0x42000; + run_42000(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x37400: + pc = 0x37400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2f000() throws ExecutionException { /* 0x2f000 - 0x2f200 */ + + private final void run_37400() throws ExecutionException { /* 0x37400 - 0x37600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2f000: - r2 = readPages[(r28+-30740)>>>12][((r28+-30740)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x37400: r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r18 = r4 + r0; - r17 = r5 + r0; - r16 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2f03c; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r2 = 6 << 16; + r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2 = r2 + -26200; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + r17 = r4 + r0; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x3744c; continue; } - r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - r2 = r0 + 1; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x2f200; - run_2f200(); return; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x3744c: + r2 = 6 << 16; + r2 = readPages[(r2 + -10296) >>> 12][((r2 + -10296) >>> 2) & 0x3ff]; + r18 = r5 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x37470; + continue; } - case 0x2f03c: - r5 = 7 << 16; - r6 = readPages[(r18+12)>>>12][((r18+12)>>>2)&0x3ff]; - r4 = r17 + r0; - r5 = r5 + -628; - /* Next insn is delay slot */ - r31=0x2f054; - pc=0x3bc00; - run_3bc00(); return; - case 0x2f054: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + r3 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + r2 = r0 + 1; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x37604; + run_37600(); + return; + } + case 0x37470: + r5 = 6 << 16; + r6 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; + r4 = r18 + r0; + r5 = r5 + -29000; + /* Next insn is delay slot */ + r31 = 0x37488; + pc = 0x42000; + run_42000(); + return; + case 0x37488: + r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; r3 = r0 + 4; r2 = r2 & 7; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2f1dc; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x37550; continue; } r3 = r0 + 6; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2f1dc; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x37550; continue; } r3 = r0 + 2; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2f13c; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x37574; continue; } - r4 = 7 << 16; - r4 = r4 + -608; + r4 = 6 << 16; + r4 = r4 + -28980; r5 = r0 + 1; r6 = r0 + 3; - r7 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2f09c; - pc=0x3dc00; - run_3dc00(); return; - case 0x2f09c: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r2 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2f16c; + r7 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x374d0; + pc = 0x43e00; + run_43e00(); + return; + case 0x374d0: + r5 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x37598; continue; } - case 0x2f0b0: - r2 = r2 & 256; - r4 = r17 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2f1c0; + r2 = r0 + 1; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x3764c; + run_37600(); + return; + } + r2 = r0 + 2; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x37628; + run_37600(); + return; + } + r4 = 6 << 16; + r4 = r4 + -28960; + /* Next insn is delay slot */ + r31 = 0x37508; + pc = 0x21a00; + run_21a00(); + return; + case 0x37508: + r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r2 = r2 & 16; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x375e0; continue; } - r5 = 7 << 16; - r7 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r6 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r5 = r5 + -604; - /* Next insn is delay slot */ - r31=0x2f0d8; - pc=0x3bc00; - run_3bc00(); return; - case 0x2f0d8: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = r2 & 32; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2f19c; + case 0x3751c: + r2 = readPages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x375bc; continue; } - case 0x2f0ec: - r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2f118; - continue; - } - r4 = 7 << 16; - r4 = r4 + -580; - r5 = r0 + 1; - r6 = r0 + 9; - r7 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2f118; - pc=0x3dc00; - run_3dc00(); return; - case 0x2f118: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r5 = r17 + r0; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + case 0x3752c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r5 = r18 + r0; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r4 = r0 + 10; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x3c000; - run_3c000(); return; - case 0x2f13c: - r4 = 7 << 16; - r4 = r4 + -624; + /* Next insn is delay slot */ + pc = 0x42200; + run_42200(); + return; + case 0x37550: + r4 = 6 << 16; + r4 = r4 + -28988; r5 = r0 + 1; r6 = r0 + 5; - r7 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2f158; - pc=0x3dc00; - run_3dc00(); return; - case 0x2f158: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r2 & 16; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x2f0b0; - continue; - } - case 0x2f16c: - r4 = 7 << 16; - r4 = r4 + -592; + r7 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x3756c; + pc = 0x43e00; + run_43e00(); + return; + case 0x3756c: + /* Next insn is delay slot */ + pc = 0x374d0; + continue; + case 0x37574: + r4 = 6 << 16; + r4 = r4 + -28996; + r5 = r0 + 1; + r6 = r0 + 5; + r7 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x37590; + pc = 0x43e00; + run_43e00(); + return; + case 0x37590: + /* Next insn is delay slot */ + pc = 0x374d0; + continue; + case 0x37598: + r4 = 6 << 16; + r4 = r4 + -28976; r5 = r0 + 1; r6 = r0 + 2; - r7 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2f188; - pc=0x3dc00; - run_3dc00(); return; - case 0x2f188: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = r2 & 32; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2f0ec; - continue; - } - case 0x2f19c: - r4 = 7 << 16; - r4 = r4 + -588; + r7 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x375b4; + pc = 0x43e00; + run_43e00(); + return; + case 0x375b4: + /* Next insn is delay slot */ + pc = 0x37508; + continue; + case 0x375bc: + r4 = 6 << 16; + r4 = r4 + -28932; + r5 = r0 + 1; + r6 = r0 + 9; + r7 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x375d8; + pc = 0x43e00; + run_43e00(); + return; + case 0x375d8: + /* Next insn is delay slot */ + pc = 0x3752c; + continue; + case 0x375e0: + r4 = 6 << 16; + r4 = r4 + -28940; r5 = r0 + 1; r6 = r0 + 4; - r7 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2f1b8; - pc=0x3dc00; - run_3dc00(); return; - case 0x2f1b8: - /* Next insn is delay slot */ - pc=0x2f0ec; + r7 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x375fc; + pc = 0x43e00; + run_43e00(); + return; + case 0x375fc: + /* Next insn is delay slot */ + pc = 0x3751c; continue; - case 0x2f1c0: - r5 = 7 << 16; - r6 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r5 = r5 + -596; - /* Next insn is delay slot */ - r31=0x2f1d4; - pc=0x3bc00; - run_3bc00(); return; - case 0x2f1d4: - /* Next insn is delay slot */ - pc=0x2f0d8; - continue; - case 0x2f1dc: - r4 = 7 << 16; - r4 = r4 + -616; + case 0x37600: + pc = 0x37600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_37600() throws ExecutionException { /* 0x37600 - 0x37800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x37600: + case 0x37604: + r4 = 6 << 16; + r4 = r4 + -29008; r5 = r0 + 1; r6 = r0 + 5; - r7 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2f1f8; - pc=0x3dc00; - run_3dc00(); return; - case 0x2f1f8: - /* Next insn is delay slot */ - pc=0x2f09c; - continue; - case 0x2f200: - pc=0x2f200; + r7 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x37620; + pc = 0x43e00; + run_43e00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x37620: + /* Next insn is delay slot */ + pc = 0x37470; + run_37400(); + return; + case 0x37628: + r5 = 6 << 16; + r7 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + r6 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r4 = r18 + r0; + r5 = r5 + -28968; + /* Next insn is delay slot */ + r31 = 0x37644; + pc = 0x42000; + run_42000(); + return; + case 0x37644: + /* Next insn is delay slot */ + pc = 0x37508; + run_37400(); + return; + case 0x3764c: + r5 = 6 << 16; + r6 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r4 = r18 + r0; + r5 = r5 + -28972; + /* Next insn is delay slot */ + r31 = 0x37664; + pc = 0x42000; + run_42000(); + return; + case 0x37664: + /* Next insn is delay slot */ + pc = 0x37508; + run_37400(); + return; + case 0x37800: + pc = 0x37800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_2f200() throws ExecutionException { /* 0x2f200 - 0x2f400 */ + + private final void run_37800() throws ExecutionException { /* 0x37800 - 0x37a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x2f200: - r4 = 7 << 16; - r4 = r4 + -636; - r5 = r0 + 1; - r6 = r0 + 5; - r7 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2f21c; - pc=0x3dc00; - run_3dc00(); return; - case 0x2f21c: - /* Next insn is delay slot */ - pc=0x2f03c; - run_2f000(); return; - case 0x2f400: - pc=0x2f400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2f400() throws ExecutionException { /* 0x2f400 - 0x2f600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2f400: - r29 = r29 + -40; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; - r16 = r5 + r0; - r5 = 7 << 16; - r6 = r4 + r0; - r5 = r5 + 16944; - r4 = r29 + 16; - r7 = r0 + 1; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x2f42c; - pc=0x31200; - run_31200(); return; - case 0x2f42c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2f488; - continue; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r16 = r16 & 7; - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x2f474; - continue; - } - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r3 = r3 & 7; - if(r3 == r16) { - /* Next insn is delay slot */ - pc=0x2f474; - continue; - } - r4 = 7 << 16; - r4 = r4 + -568; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x2f470; - pc=0x1b000; - run_1b000(); return; - case 0x2f470: - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - case 0x2f474: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2f488: - r4 = r0 + 32; - /* Next insn is delay slot */ - r31=0x2f494; - pc=0x1b400; - run_1b400(); return; - case 0x2f494: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r16; - r16 = r16 & 256; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x2f4d4; - continue; - } - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - case 0x2f4ac: - r3 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - writePages[(r2+28)>>>12][((r2+28)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r0; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2f4d4: - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x2f4ac; - continue; - case 0x2f600: - pc=0x2f600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2f600() throws ExecutionException { /* 0x2f600 - 0x2f800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2f600: - r29 = r29 + -40; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r16 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - r2 = r16 & 16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - r17 = r4 + r0; - r18 = r5 + r0; - r19 = r6 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2f63c; - continue; - } - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x2f6e8; - continue; - } - case 0x2f63c: - r4 = r17 + r0; - r5 = r18 + r0; - r6 = r0 + 24; - /* Next insn is delay slot */ - r31=0x2f650; - pc=0x48fdc; - run_48e00(); return; - case 0x2f650: - r2 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; - case 0x2f654: - r4 = r16 & 40; - r3 = r0 + 32; - if(r4 == r3) { - /* Next insn is delay slot */ - pc=0x2f6a8; - continue; - } - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x2f6bc; - continue; - } - case 0x2f66c: - r3 = r16 & 55; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2f74c; - continue; - } - case 0x2f678: - r3 = r0 + -8; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r2 = r2 & r3; - r2 = r2 | r16; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2f6a8: - r3 = r0 + -9; - r2 = r2 & r3; - writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x2f66c; - continue; - } - case 0x2f6bc: - r16 = r16 & 32; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r2 = r2 | r16; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2f6e8: - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r3 = r2 ^ r16; - r3 = r3 & 256; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x2f730; - continue; - } - r3 = r16 & 256; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2f75c; - continue; - } - f2 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - f0 = readPages[(r5+12)>>>12][((r5+12)>>>2)&0x3ff]; - f3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - f1 = readPages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x2f654; - continue; - } - case 0x2f730: - r4 = 7 << 16; - r4 = r4 + -544; - /* Next insn is delay slot */ - r31=0x2f740; - pc=0x1b000; - run_1b000(); return; - case 0x2f740: - r2 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x2f654; - continue; - case 0x2f74c: - r3 = r2 & 7; - r16 = r3 | r16; - /* Next insn is delay slot */ - pc=0x2f678; - continue; - case 0x2f75c: - r4 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r3 = readPages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff]; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x2f730; - continue; - } - /* Next insn is delay slot */ - pc=0x2f654; - continue; - case 0x2f800: - pc=0x2f800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2f800() throws ExecutionException { /* 0x2f800 - 0x2fa00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2f800: - r29 = r29 + -88; - r2 = r4 + r0; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r18; - r18 = r5 + r0; - r5 = 7 << 16; - writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r19; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r17; - r19 = r7 + r0; - r17 = r6 + r0; - r4 = r29 + 16; - r5 = r5 + 16944; - r6 = r2 + r0; - r7 = r0 + 1; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x2f844; - pc=0x31200; - run_31200(); return; - case 0x2f844: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2f9cc; - continue; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r17 = r17 & 7; - r16 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x2f884; - continue; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = r2 & 7; - if(r2 == r17) { - /* Next insn is delay slot */ - pc=0x2f884; - continue; - } - r4 = 7 << 16; - r4 = r4 + -568; - /* Next insn is delay slot */ - r31=0x2f884; - pc=0x1b000; - run_1b000(); return; - case 0x2f884: - r18 = r18 & 1; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x2f8a0; - continue; - } - r2 = readPages[(r28+-32332)>>>12][((r28+-32332)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2f9b4; - continue; - } - case 0x2f8a0: - r4 = r29 + 40; - /* Next insn is delay slot */ - r31=0x2f8ac; - pc=0x28000; - run_28000(); return; - case 0x2f8ac: - r17 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r18 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r3 = r17 & 16; - r18 = r18 & 16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2f938; - continue; - } - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x2f988; - continue; - } - r3 = r17 & 256; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x2fa34; - run_2fa00(); return; - } - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2fa24; - run_2fa00(); return; - } - f2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - f0 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - f1 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x2fa34; - run_2fa00(); return; - } - case 0x2f910: - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r18 = r18 | r17; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; - r19 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r18 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r16 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2f938: - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r4; - r5 = r29 + 16; - r4 = r16 + r0; - r6 = r0 + 24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r18; - /* Next insn is delay slot */ - r31=0x2f954; - pc=0x48fdc; - run_48e00(); return; - case 0x2f954: - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x2f910; - continue; - } - r17 = r17 & 32; - r18 = r18 | r17; - case 0x2f964: - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; - r19 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r18 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r16 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2f988: - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r4; - r5 = r29 + 16; - r4 = r16 + r0; - r6 = r0 + 24; - r17 = r17 & 32; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r18; - /* Next insn is delay slot */ - r31=0x2f9a8; - pc=0x48fdc; - run_48e00(); return; - case 0x2f9a8: - r18 = r18 | r17; - /* Next insn is delay slot */ - pc=0x2f964; - continue; - case 0x2f9b4: - r4 = 7 << 16; - r4 = r4 + -520; - /* Next insn is delay slot */ - r31=0x2f9c4; - pc=0x1ae00; - run_1ae00(); return; - case 0x2f9c4: - /* Next insn is delay slot */ - pc=0x2f8a0; - continue; - case 0x2f9cc: - r4 = r0 + 32; - /* Next insn is delay slot */ - r31=0x2f9d8; - pc=0x1b400; - run_1b400(); return; - case 0x2f9d8: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r17; - r17 = r17 & 256; - r16 = r2 + r0; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x2fa14; - run_2fa00(); return; - } - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - case 0x2f9f4: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; - writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r2; - case 0x2fa00: - pc=0x2fa00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2fa00() throws ExecutionException { /* 0x2fa00 - 0x2fc00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2fa00: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - pc=0x2f884; - run_2f800(); return; - case 0x2fa14: - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x2f9f4; - run_2f800(); return; - case 0x2fa24: - r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2f910; - run_2f800(); return; - } - case 0x2fa34: - r4 = 7 << 16; - r4 = r4 + -544; - /* Next insn is delay slot */ - r31=0x2fa44; - pc=0x1b000; - run_1b000(); return; - case 0x2fa44: - /* Next insn is delay slot */ - pc=0x2f910; - run_2f800(); return; - case 0x2fc00: - pc=0x2fc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2fc00() throws ExecutionException { /* 0x2fc00 - 0x2fe00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2fc00: - r29 = r29 + -88; - writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r19; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r18; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r17; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r16; - r19 = r5 + r0; - r16 = r4 + r0; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x2fc28; - pc=0x20200; - run_20200(); return; - case 0x2fc28: - addr=r28+-30588; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r18 = r2 + r0; - r17 = r29 + 16; - r5 = 7 << 16; - r2 = r0 + 61; - r4 = r17 + r0; - r5 = r5 + 16944; - r6 = r16 + r0; - r7 = r0 + 1; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x2fd6c; - continue; - } - /* Next insn is delay slot */ - r31=0x2fc5c; - pc=0x31200; - run_31200(); return; - case 0x2fc5c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2fe80; - run_2fe00(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r18 = r18 & 7; - r16 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x2fc9c; - continue; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = r2 & 7; - if(r2 == r18) { - /* Next insn is delay slot */ - pc=0x2fc9c; - continue; - } - r4 = 7 << 16; - r4 = r4 + -568; - /* Next insn is delay slot */ - r31=0x2fc9c; - pc=0x1b000; - run_1b000(); return; - case 0x2fc9c: - r19 = r19 & 1; - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x2fcb8; - continue; - } - case 0x2fca8: - r2 = readPages[(r28+-32332)>>>12][((r28+-32332)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2fed0; - run_2fe00(); return; - } - case 0x2fcb8: - r4 = r29 + 40; - /* Next insn is delay slot */ - r31=0x2fcc4; - pc=0x28000; - run_28000(); return; - case 0x2fcc4: - r18 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r3 = r18 & 16; - r19 = r19 & 16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2fd48; - continue; - } - case 0x2fce8: - r3 = r18 & 256; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x2fe68; - run_2fe00(); return; - } - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2fe58; - run_2fe00(); return; - } - f2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - f0 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - f1 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x2fe68; - run_2fe00(); return; - } - case 0x2fd20: - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r18 = r19 | r18; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; - r19 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r18 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r16 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2fd48: - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r4; - r5 = r17 + r0; - r4 = r16 + r0; - r6 = r0 + 24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r19; - /* Next insn is delay slot */ - r31=0x2fd64; - pc=0x48fdc; - run_48e00(); return; - case 0x2fd64: - /* Next insn is delay slot */ - pc=0x2fd20; - continue; - case 0x2fd6c: - /* Next insn is delay slot */ - r31=0x2fd74; - pc=0x31200; - run_31200(); return; - case 0x2fd74: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x2ff28; - run_2fe00(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r18 = r18 & 7; - r16 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x2fdb4; - continue; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = r2 & 7; - if(r2 == r18) { - /* Next insn is delay slot */ - pc=0x2fdb4; - continue; - } - r4 = 7 << 16; - r4 = r4 + -568; - /* Next insn is delay slot */ - r31=0x2fdb4; - pc=0x1b000; - run_1b000(); return; - case 0x2fdb4: - /* Next insn is delay slot */ - r31=0x2fdbc; - pc=0x1c000; - run_1c000(); return; - case 0x2fdbc: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x2fdc8; - pc=0x16400; - run_16400(); return; - case 0x2fdc8: - /* Next insn is delay slot */ - r31=0x2fdd0; - pc=0x31a00; - run_31a00(); return; - case 0x2fdd0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2fde0; - continue; - } - r2 = r0 + 1; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - case 0x2fde0: - r18 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = r18 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x2ff70; - run_2fe00(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r3 = r2 ^ r18; - case 0x2fe00: - pc=0x2fe00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_2fe00() throws ExecutionException { /* 0x2fe00 - 0x30000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x2fe00: - r3 = r3 & 256; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x2fe3c; - continue; - } - r3 = r18 & 256; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2fff8; - continue; - } - f2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - f0 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - f1 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x2ff88; - continue; - } - case 0x2fe3c: - r4 = 7 << 16; - r4 = r4 + -544; - /* Next insn is delay slot */ - r31=0x2fe4c; - pc=0x1b000; - run_1b000(); return; - case 0x2fe4c: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x2ff88; - continue; - case 0x2fe58: - r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x2fd20; - run_2fc00(); return; - } - case 0x2fe68: - r4 = 7 << 16; - r4 = r4 + -544; - /* Next insn is delay slot */ - r31=0x2fe78; - pc=0x1b000; - run_1b000(); return; - case 0x2fe78: - /* Next insn is delay slot */ - pc=0x2fd20; - run_2fc00(); return; - case 0x2fe80: - r4 = r0 + 32; - /* Next insn is delay slot */ - r31=0x2fe8c; - pc=0x1b400; - run_1b400(); return; - case 0x2fe8c: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r18; - r18 = r18 & 256; - r16 = r2 + r0; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x2ff18; - continue; - } - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - case 0x2fea8: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - r19 = r19 & 1; - writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r2; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x2fca8; - run_2fc00(); return; - } - /* Next insn is delay slot */ - pc=0x2fcb8; - run_2fc00(); return; - case 0x2fed0: - r4 = 7 << 16; - r4 = r4 + -520; - /* Next insn is delay slot */ - r31=0x2fee0; - pc=0x1ae00; - run_1ae00(); return; - case 0x2fee0: - r4 = r29 + 40; - /* Next insn is delay slot */ - r31=0x2feec; - pc=0x28000; - run_28000(); return; - case 0x2feec: - r18 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r3 = r18 & 16; - r19 = r19 & 16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x2fd48; - run_2fc00(); return; - } - /* Next insn is delay slot */ - pc=0x2fce8; - run_2fc00(); return; - case 0x2ff18: - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x2fea8; - continue; - case 0x2ff28: - r4 = r0 + 32; - /* Next insn is delay slot */ - r31=0x2ff34; - pc=0x1b400; - run_1b400(); return; - case 0x2ff34: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r18; - r18 = r18 & 256; - r16 = r2 + r0; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x30014; - run_30000(); return; - } - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - case 0x2ff50: - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; - writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r2; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - pc=0x2fdb4; - run_2fc00(); return; - case 0x2ff70: - r4 = r16 + r0; - r5 = r17 + r0; - r6 = r0 + 24; - /* Next insn is delay slot */ - r31=0x2ff84; - pc=0x48fdc; - run_48e00(); return; - case 0x2ff84: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - case 0x2ff88: - r4 = r18 & 40; - r3 = r0 + 32; - if(r4 == r3) { - /* Next insn is delay slot */ - pc=0x2ffe4; - continue; - } - case 0x2ff98: - r3 = r18 & 55; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x2ffac; - continue; - } - r3 = r2 & 7; - r18 = r3 | r18; - case 0x2ffac: - r3 = r0 + -8; - r2 = r2 & r3; - r18 = r2 | r18; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; - /* Next insn is delay slot */ - r31=0x2ffc4; - pc=0x1ce00; - run_1ce00(); return; - case 0x2ffc4: - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r19 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r18 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r16 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x2ffe4: - r3 = r0 + -9; - r2 = r2 & r3; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x2ff98; - continue; - case 0x2fff8: - r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - case 0x30000: - pc=0x30000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_30000() throws ExecutionException { /* 0x30000 - 0x30200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x30000: - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x2fe3c; - run_2fe00(); return; - } - /* Next insn is delay slot */ - pc=0x2ff88; - run_2fe00(); return; - case 0x30014: - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x2ff50; - run_2fe00(); return; - case 0x30200: - pc=0x30200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_30200() throws ExecutionException { /* 0x30200 - 0x30400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x30200: + for (;;) { + switch (pc) { + case 0x37800: r29 = r29 + -32; - r5 = 7 << 16; - r5 = r5 + 16944; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - r6 = r0 + r0; - r16 = r4 + r0; - r7 = r0 + 1; + r5 = 6 << 16; + r6 = r4 + r0; + r5 = r5 + -11392; r4 = r29 + 16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x3022c; - pc=0x31200; - run_31200(); return; - case 0x3022c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x30268; + r7 = r0 + 1; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x37824; + pc = 0x39000; + run_39000(); + return; + case 0x37824: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x37844; continue; } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r16; - r3 = r3 & 32; - r3 = r3 | 80; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x30268: - r4 = r0 + 32; - /* Next insn is delay slot */ - r31=0x30274; - pc=0x1b400; - run_1b400(); return; - case 0x30274: - r3 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - writePages[(r2+28)>>>12][((r2+28)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r0; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = r2; - r3 = r0 + 80; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r16; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + case 0x37844: + r4 = r0 + 48; + /* Next insn is delay slot */ + r31 = 0x37850; + pc = 0x20800; + run_20800(); + return; + case 0x37850: + r3 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + writePages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff] = r2; + r3 = 6 << 16; + r3 = readPages[(r3 + -10328) >>> 12][((r3 + -10328) >>> 2) & 0x3ff]; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 32) >>> 12][((r2 + 32) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 36) >>> 12][((r2 + 36) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 40) >>> 12][((r2 + 40) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 44) >>> 12][((r2 + 44) >>> 2) & 0x3ff] = r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x30400: - pc=0x30400; + case 0x37a00: + pc = 0x37a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_30400() throws ExecutionException { /* 0x30400 - 0x30600 */ + + private final void run_37a00() throws ExecutionException { /* 0x37a00 - 0x37c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x30400: + for (;;) { + switch (pc) { + case 0x37a00: + r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r29 = r29 + -32; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + r16 = r4 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x37a80; + continue; + } + r3 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + r17 = r5 + r0; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x37aa4; + continue; + } + r6 = r6 & 2; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x37a50; + continue; + } + r5 = 5 << 16; + r4 = r0 + -2; + r5 = r5 + 29612; + /* Next insn is delay slot */ + r31 = 0x37a50; + pc = 0x20600; + run_20600(); + return; + case 0x37a50: + r4 = r16 + r0; + r5 = r17 + r0; + r6 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x37a64; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x37a64: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + writePages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff] = r0; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x37a80: + r6 = r0 + 32; + /* Next insn is delay slot */ + r31 = 0x37a8c; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x37a8c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x37aa4: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r25 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r6 = r6 & 1; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r25; + return; + case 0x37c00: + pc = 0x37c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_37c00() throws ExecutionException { /* 0x37c00 - 0x37e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x37c00: + r29 = r29 + -32; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + r17 = r5 + r0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x37cd8; + continue; + } + case 0x37c20: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x37cf0; + continue; + } + case 0x37c30: + r3 = 6 << 16; + r3 = r3 + -26200; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x37c64; + continue; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -28888; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x37c64: + r2 = readPages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x37cac; + continue; + } + r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r2 = r2 & 7; + if (r2 == r17) { + /* Next insn is delay slot */ + pc = 0x37cc0; + continue; + } + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -28844; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); + return; + case 0x37cac: + r3 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r2 = r0 + -8; + r2 = r3 & r2; + r17 = r17 | r2; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r17; + case 0x37cc0: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x37cd8: + r4 = 6 << 16; + r4 = r4 + -28920; + /* Next insn is delay slot */ + r31 = 0x37ce8; + pc = 0x21a00; + run_21a00(); + return; + case 0x37ce8: + /* Next insn is delay slot */ + pc = 0x37c20; + continue; + case 0x37cf0: + r4 = 6 << 16; + r4 = r4 + -28904; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x37d04; + pc = 0x21a00; + run_21a00(); + return; + case 0x37d04: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x37c30; + continue; + case 0x37e00: + pc = 0x37e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_37e00() throws ExecutionException { /* 0x37e00 - 0x38000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x37e00: + r29 = r29 + -24; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r16 = r4 + r0; + r4 = r0 + r0; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x37e1c; + pc = 0x37800; + run_37800(); + return; + case 0x37e1c: + r3 = 6 << 16; + r3 = r3 + -26200; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + r3 = r0 + 1; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r3; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r0; + r29 = r29 + 24; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x38000: + pc = 0x38000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_38000() throws ExecutionException { /* 0x38000 - 0x38200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x38000: r7 = r4 + r0; r6 = 3 << 16; - r4 = 7 << 16; - r4 = r4 + 16944; + r4 = 6 << 16; + r4 = r4 + -11392; r5 = r0 + r0; - r6 = r6 + -4096; - /* Next insn is delay slot */ - pc=0x31800; - run_31800(); return; - case 0x30600: - pc=0x30600; + r6 = r6 + 29696; + /* Next insn is delay slot */ + pc = 0x39200; + run_39200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x38200: + pc = 0x38200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_30600() throws ExecutionException { /* 0x30600 - 0x30800 */ + + private final void run_38200() throws ExecutionException { /* 0x38200 - 0x38400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x30600: + for (;;) { + switch (pc) { + case 0x38200: r29 = r29 + -32; r6 = 3 << 16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r17 = 7 << 16; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + r17 = 6 << 16; r16 = r4 + r0; r7 = r16 + r0; - r4 = r17 + 16944; - r6 = r6 + -4608; + r4 = r17 + -11392; + r6 = r6 + 29184; r5 = r0 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x30634; - pc=0x31800; - run_31800(); return; - case 0x30634: + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x38234; + pc = 0x39200; + run_39200(); + return; + case 0x38234: r5 = r16 + r0; r4 = r0 + 10; - /* Next insn is delay slot */ - r31=0x30644; - pc=0x3c000; - run_3c000(); return; - case 0x30644: + /* Next insn is delay slot */ + r31 = 0x38244; + pc = 0x42200; + run_42200(); + return; + case 0x38244: r6 = 3 << 16; r7 = r16 + r0; - r4 = r17 + 16944; - r6 = r6 + -5120; + r4 = r17 + -11392; + r6 = r6 + 28672; r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x30660; - pc=0x31800; - run_31800(); return; - case 0x30660: + /* Next insn is delay slot */ + r31 = 0x38260; + pc = 0x39200; + run_39200(); + return; + case 0x38260: r5 = r16 + r0; r4 = r0 + 10; - /* Next insn is delay slot */ - r31=0x30670; - pc=0x3c000; - run_3c000(); return; - case 0x30670: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r4 = r17 + 16944; + /* Next insn is delay slot */ + r31 = 0x38270; + pc = 0x42200; + run_42200(); + return; + case 0x38270: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r4 = r17 + -11392; r6 = 3 << 16; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r7 = r16 + r0; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r5 = r0 + r0; - r6 = r6 + -5632; + r6 = r6 + 28160; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x31800; - run_31800(); return; - case 0x30800: - pc=0x30800; + /* Next insn is delay slot */ + pc = 0x39200; + run_39200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x38400: + pc = 0x38400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_30800() throws ExecutionException { /* 0x30800 - 0x30a00 */ + + private final void run_38400() throws ExecutionException { /* 0x38400 - 0x38600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x30800: - r29 = r29 + -40; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - r17 = r4 + r0; - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r5 = r0 + r0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x30828; - pc=0x17c00; - run_17c00(); return; - case 0x30828: - r2 = readPages[(r28+-32228)>>>12][((r28+-32228)>>>2)&0x3ff]; - r5 = 7 << 16; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r29 + 16; - r5 = r5 + 16944; - r7 = r0 + 1; - /* Next insn is delay slot */ - r31=0x30848; - pc=0x31200; - run_31200(); return; - case 0x30848: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3095c; - continue; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r18 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - r3 = readPages[(r18+28)>>>12][((r18+28)>>>2)&0x3ff]; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x30994; - continue; - } - writePages[(r18+28)>>>12][((r18+28)>>>2)&0x3ff] = r2; - writePages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff] = r0; - r16 = r0 + r0; - case 0x3087c: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r3 = r3 + -1; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x308cc; - continue; - case 0x3089c: - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r6 = r3 + 1; - r3 = r5 + r3; - r5 = r16 & 15; - r5 = r5 + 97; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; - r16 = r16 >>> 4; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x3091c; - continue; - } - case 0x308c8: - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - case 0x308cc: - r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - if(r5 != r3) { - /* Next insn is delay slot */ - pc=0x3089c; - continue; - } - /* Next insn is delay slot */ - r31=0x308e4; - pc=0x17800; - run_17800(); return; - case 0x308e4: - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - r3 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - r5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r6 = r3 + 1; - r3 = r5 + r3; - r5 = r16 & 15; - r5 = r5 + 97; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r6; - r16 = r16 >>> 4; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x308c8; - continue; - } - case 0x3091c: - r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x30928; - pc=0x17c00; - run_17c00(); return; - case 0x30928: - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x30940; - continue; - } - r2 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff] = r2; - case 0x30940: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x3095c: - r4 = r0 + 32; - /* Next insn is delay slot */ - r31=0x30968; - pc=0x1b400; - run_1b400(); return; - case 0x30968: - r18 = r2 + r0; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r0; - r2 = readPages[(r28+-30584)>>>12][((r28+-30584)>>>2)&0x3ff]; - writePages[(r18+28)>>>12][((r18+28)>>>2)&0x3ff] = r2; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r18; - case 0x30994: - r16 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x3087c; - continue; - case 0x30a00: - pc=0x30a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_30a00() throws ExecutionException { /* 0x30a00 - 0x30c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x30a00: - r2 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r5 = r2 + 1; - r2 = r0 + r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x30a40; - continue; - } - case 0x30a1c: - r6 = r2 >>> 25; - r2 = r2 << 7; - r2 = r2 | r6; - r5 = r5 + 1; - r2 = r3 ^ r2; - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x30a1c; - continue; - } - case 0x30a40: - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x30c00: - pc=0x30c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_30c00() throws ExecutionException { /* 0x30c00 - 0x30e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x30c00: - r2 = readPages[(r5+12)>>>12][((r5+12)>>>2)&0x3ff]; - r3 = r0 + r0; - r6 = r2 + 1; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x30c40; - continue; - } - case 0x30c1c: - r7 = r3 >>> 25; - r3 = r3 << 7; - r3 = r3 | r7; - r6 = r6 + 1; - r3 = r2 ^ r3; - addr=r6+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x30c1c; - continue; - } - case 0x30c40: - writePages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff] = r3; - case 0x30c44: - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x30c7c; - continue; - } - case 0x30c54: - r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r4 = ((r4 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x30c88; - continue; - } - r4 = r2 + r0; - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x30c54; - continue; - } - case 0x30c7c: - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x30c88: - r4 = r2 + 4; - /* Next insn is delay slot */ - pc=0x30c44; - continue; - case 0x30e00: - pc=0x30e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_30e00() throws ExecutionException { /* 0x30e00 - 0x31000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x30e00: - r2 = readPages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x30ec0; - continue; - } - case 0x30e10: - r8 = r5 + 20; - r2 = readPages[(r8+-8)>>>12][((r8+-8)>>>2)&0x3ff]; - r3 = r0 + r0; - r6 = r2 + 1; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x30e54; - continue; - } - case 0x30e30: - r7 = r3 >>> 25; - r3 = r3 << 7; - r3 = r3 | r7; - r6 = r6 + 1; - r3 = r2 ^ r3; - addr=r6+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x30e30; - continue; - } - case 0x30e54: - writePages[(r8+-12)>>>12][((r8+-12)>>>2)&0x3ff] = r3; - r6 = r4 + r0; - case 0x30e5c: - r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x30e94; - continue; - } - case 0x30e6c: - r6 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - r6 = ((r6 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x30eb4; - continue; - } - r6 = r2 + r0; - r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x30e6c; - continue; - } - case 0x30e94: - writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r5; - r2 = readPages[(r8+8)>>>12][((r8+8)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x30ec4; - continue; - } - r5 = r8 + r0; - /* Next insn is delay slot */ - pc=0x30e10; - continue; - case 0x30eb4: - r6 = r2 + 4; - /* Next insn is delay slot */ - pc=0x30e5c; - continue; - case 0x30ec0: - r8 = r5 + r0; - case 0x30ec4: - r2 = readPages[(r8+12)>>>12][((r8+12)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r5 = r2 + 1; - r2 = r0 + r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x30f04; - continue; - } - case 0x30ee0: - r6 = r2 >>> 25; - r2 = r2 << 7; - r2 = r2 | r6; - r5 = r5 + 1; - r2 = r3 ^ r2; - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x30ee0; - continue; - } - case 0x30f04: - writePages[(r8+8)>>>12][((r8+8)>>>2)&0x3ff] = r2; - case 0x30f08: - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x30f40; - continue; - } - case 0x30f18: - r4 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r4 = ((r4 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x30f4c; - continue; - } - r4 = r3 + r0; - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x30f18; - continue; - } - case 0x30f40: - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x30f4c: - r4 = r3 + 4; - /* Next insn is delay slot */ - pc=0x30f08; - continue; - case 0x31000: - pc=0x31000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_31000() throws ExecutionException { /* 0x31000 - 0x31200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x31000: - r9 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - r8 = r0 + r0; - addr=r9+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r9 + 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3103c; - continue; - } - case 0x31018: - r6 = r8 >>> 25; - r8 = r8 << 7; - r8 = r8 | r6; - r3 = r3 + 1; - r8 = r2 ^ r8; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x31018; - continue; - } - case 0x3103c: - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x31068; - continue; - } - case 0x31044: - r2 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r3 = ((r2 & 0xffffffffL) < (r8 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x31074; - continue; - } - r4 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x31044; - continue; - } - case 0x31068: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x31074: - if(r2 == r8) { - /* Next insn is delay slot */ - pc=0x31088; - continue; - } - case 0x3107c: - r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x3103c; - continue; - case 0x31088: - r3 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - r2 = r9 + r0; - /* Next insn is delay slot */ - pc=0x310a0; - continue; - case 0x31098: - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x310c4; - continue; - } - case 0x310a0: - r2 = r2 + 1; - r3 = r3 + 1; - addr=r2+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r7 = tmp; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r6 = tmp; - if(r6 == r7) { - /* Next insn is delay slot */ - pc=0x31098; - continue; - } - /* Next insn is delay slot */ - pc=0x3107c; - continue; - case 0x310c4: - r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r2; - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x31200: - pc=0x31200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_31200() throws ExecutionException { /* 0x31200 - 0x31400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x31200: - r2 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x38400: r29 = r29 + -48; - r10 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; - addr=r10+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r19 = r4 + r0; - r8 = r10 + 1; - r2 = r0 + r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3125c; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r20; + r20 = 6 << 16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + r5 = r0 + r0; + r18 = r4 + r0; + r4 = r20 + -24536; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x38438; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x38438: + r2 = readPages[(r28 + -32672) >>> 12][((r28 + -32672) >>> 2) & 0x3ff]; + r4 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x3844c; + pc = 0x37800; + run_37800(); + return; + case 0x3844c: + r21 = r2 + r0; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x38594; continue; } - case 0x31238: + r3 = 6 << 16; + r3 = r3 + -26200; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x38484; + continue; + } + r4 = 6 << 16; + r4 = r4 + -28820; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x38484; + pc = 0x21a00; + run_21a00(); + return; + case 0x38484: + r2 = 6 << 16; + r2 = readPages[(r2 + -10328) >>> 12][((r2 + -10328) >>> 2) & 0x3ff]; + r3 = readPages[(r21 + 32) >>> 12][((r21 + 32) >>> 2) & 0x3ff]; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x38588; + continue; + } + writePages[(r21 + 32) >>> 12][((r21 + 32) >>> 2) & 0x3ff] = r2; + writePages[(r21 + 16) >>> 12][((r21 + 16) >>> 2) & 0x3ff] = r0; + r16 = r0 + r0; + case 0x384a8: + r17 = r20 + -24536; + r3 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r19 = r17 + r0; + r3 = r3 + -1; + writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x384f0; + continue; + case 0x384c4: + r5 = readPages[(r20 + -24536) >>> 12][((r20 + -24536) >>> 2) & 0x3ff]; + r6 = r3 + 1; + r3 = r5 + r3; + r5 = r16 & 15; + r5 = r5 + 97; + r16 = r16 >>> 4; + writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r6; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x38538; + continue; + } + case 0x384ec: + r3 = readPages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff]; + case 0x384f0: + r5 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + if (r5 != r3) { + /* Next insn is delay slot */ + pc = 0x384c4; + continue; + } + r4 = r19 + r0; + /* Next insn is delay slot */ + r31 = 0x3850c; + pc = 0x1c600; + run_1c600(); + return; + case 0x3850c: + r3 = readPages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff]; + r5 = readPages[(r20 + -24536) >>> 12][((r20 + -24536) >>> 2) & 0x3ff]; + r6 = r3 + 1; + r3 = r5 + r3; + r5 = r16 & 15; + r5 = r5 + 97; + r16 = r16 >>> 4; + writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r6; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x384ec; + continue; + } + case 0x38538: + r4 = r19 + r0; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x38548; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x38548: + if (r18 == r0) { + /* Next insn is delay slot */ + pc = 0x38560; + continue; + } + r2 = readPages[(r21 + 16) >>> 12][((r21 + 16) >>> 2) & 0x3ff]; + r2 = r2 + 1; + writePages[(r21 + 16) >>> 12][((r21 + 16) >>> 2) & 0x3ff] = r2; + case 0x38560: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x38588: + r16 = readPages[(r21 + 16) >>> 12][((r21 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x384a8; + continue; + case 0x38594: + r2 = 6 << 16; + r2 = r2 + -26200; + writePages[(r21 + 0) >>> 12][((r21 + 0) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + writePages[(r21 + 8) >>> 12][((r21 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r21 + 12) >>> 12][((r21 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r21 + 24) >>> 12][((r21 + 24) >>> 2) & 0x3ff] = r0; + writePages[(r21 + 16) >>> 12][((r21 + 16) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x38484; + continue; + case 0x38600: + pc = 0x38600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_38600() throws ExecutionException { /* 0x38600 - 0x38800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x38600: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r5 = tmp; + r29 = r29 + -64; + r2 = r0 + 63; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x38648; + continue; + } + r4 = 6 << 16; + r4 = r4 + -28792; + /* Next insn is delay slot */ + r31 = 0x38648; + pc = 0x21a00; + run_21a00(); + return; + case 0x38648: + r18 = 6 << 16; + r4 = r18 + -17540; + r23 = 6 << 16; + /* Next insn is delay slot */ + r31 = 0x3865c; + pc = 0x1c400; + run_1c400(); + return; + case 0x3865c: + r5 = readPages[(r23 + -24536) >>> 12][((r23 + -24536) >>> 2) & 0x3ff]; + r4 = r18 + -17540; + /* Next insn is delay slot */ + r31 = 0x3866c; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x3866c: + r20 = 6 << 16; + r22 = 6 << 16; + r16 = r18 + -17540; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r20 = r20 + -26200; + r22 = r22 + -26280; + r21 = 5 << 16; + r19 = r16 + r0; + case 0x3868c: + r3 = r0 + 63; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x38864; + run_38800(); + return; + } + /* Next insn is delay slot */ + r31 = 0x386a0; + pc = 0x23400; + run_23400(); + return; + case 0x386a0: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + r2 = r0 + 40; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x387fc; + continue; + } + r4 = r29 + 16; + r5 = r0 + r0; + r17 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x386c4; + pc = 0x25000; + run_25000(); + return; + case 0x386c4: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x38820; + run_38800(); + return; + } + case 0x386cc: + r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x386d8; + pc = 0x37800; + run_37800(); + return; + case 0x386d8: + r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r4 = r0 + 1; + writePages[(r2 + 36) >>> 12][((r2 + 36) >>> 2) & 0x3ff] = r4; + if (r3 == r20) { + /* Next insn is delay slot */ + pc = 0x387d4; + continue; + } + if (r3 != r22) { + /* Next insn is delay slot */ + pc = 0x388d4; + run_38800(); + return; + } + r2 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r4 = r18 + -17540; + r6 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r5 = r2 + 8; + /* Next insn is delay slot */ + r31 = 0x3870c; + pc = 0x1ce00; + run_1ce00(); + return; + case 0x3870c: + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x38738; + continue; + } + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r0 + 32; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x3882c; + run_38800(); + return; + } + r3 = r0 + 41; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x38844; + run_38800(); + return; + } + case 0x38730: + /* Next insn is delay slot */ + r31 = 0x38738; + pc = 0x23400; + run_23400(); + return; + case 0x38738: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r17 = r21 + 29340; + r3 = r2 & 255; + r3 = r17 + r3; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r3 = tmp; + r3 = r3 & 64; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x387a4; + continue; + } + /* Next insn is delay slot */ + pc = 0x3868c; + continue; + case 0x38764: + r4 = readPages[(r18 + -17540) >>> 12][((r18 + -17540) >>> 2) & 0x3ff]; + r5 = r3 + 1; + r3 = r4 + r3; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r5; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + r31 = 0x38780; + pc = 0x23400; + run_23400(); + return; + case 0x38780: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r2 & 255; + r3 = r17 + r3; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r3 = tmp; + r3 = r3 & 64; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x3868c; + continue; + } + case 0x387a4: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r3 != r4) { + /* Next insn is delay slot */ + pc = 0x38764; + continue; + } + r4 = r19 + r0; + /* Next insn is delay slot */ + r31 = 0x387c4; + pc = 0x1c600; + run_1c600(); + return; + case 0x387c4: + r3 = readPages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff]; + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + /* Next insn is delay slot */ + pc = 0x38764; + continue; + case 0x387d4: + r3 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + if (r3 != r4) { + /* Next insn is delay slot */ + pc = 0x388f4; + run_38800(); + return; + } + r5 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; + r4 = r18 + -17540; + /* Next insn is delay slot */ + r31 = 0x387f4; + pc = 0x1d000; + run_1d000(); + return; + case 0x387f4: + /* Next insn is delay slot */ + pc = 0x3870c; + continue; + case 0x387fc: + /* Next insn is delay slot */ + r31 = 0x38804; + pc = 0x23400; + run_23400(); + return; + case 0x38800: + pc = 0x38800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_38800() throws ExecutionException { /* 0x38800 - 0x38a00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x38800: + case 0x38804: + r4 = r29 + 16; + r5 = r0 + r0; + r17 = r0 + 1; + /* Next insn is delay slot */ + r31 = 0x38818; + pc = 0x25000; + run_25000(); + return; + case 0x38818: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x386cc; + run_38600(); + return; + } + case 0x38820: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x388a4; + continue; + case 0x3882c: + /* Next insn is delay slot */ + r31 = 0x38834; + pc = 0x23400; + run_23400(); + return; + case 0x38834: + addr = r28 + -31268; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + r3 = r0 + 41; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x38730; + run_38600(); + return; + } + case 0x38844: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -28648; + /* Next insn is delay slot */ + r31 = 0x38858; + pc = 0x20600; + run_20600(); + return; + case 0x38858: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x388a4; + continue; + case 0x38864: + r5 = r0 + r0; + r4 = r18 + -17540; + /* Next insn is delay slot */ + r31 = 0x38874; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x38874: + r4 = r23 + -24536; + /* Next insn is delay slot */ + r31 = 0x38880; + pc = 0x1c400; + run_1c400(); + return; + case 0x38880: + r5 = readPages[(r18 + -17540) >>> 12][((r18 + -17540) >>> 2) & 0x3ff]; + r4 = r23 + -24536; + /* Next insn is delay slot */ + r31 = 0x38890; + pc = 0x1cc00; + run_1cc00(); + return; + case 0x38890: + r4 = r23 + -24536; + r5 = r0 + r0; + /* Next insn is delay slot */ + r31 = 0x388a0; + pc = 0x1ca00; + run_1ca00(); + return; + case 0x388a0: + r2 = r0 + r0; + case 0x388a4: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r29 = r29 + 64; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x388d4: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -28712; + /* Next insn is delay slot */ + r31 = 0x388e8; + pc = 0x20600; + run_20600(); + return; + case 0x388e8: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x388a4; + continue; + case 0x388f4: + r5 = 6 << 16; + r4 = r0 + -2; + r5 = r5 + -28776; + /* Next insn is delay slot */ + r31 = 0x38908; + pc = 0x20600; + run_20600(); + return; + case 0x38908: + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x388a4; + continue; + case 0x38a00: + pc = 0x38a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_38a00() throws ExecutionException { /* 0x38a00 - 0x38c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x38a00: + r29 = r29 + -40; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + r17 = r5 + r0; + r19 = r6 + r0; + r18 = r7 + r0; + /* Next insn is delay slot */ + pc = 0x38a64; + continue; + case 0x38a30: + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x38a54; + continue; + } + r5 = r17 + r0; + r6 = r19 + r0; + r7 = r18 + r0; + /* Next insn is delay slot */ + r31 = 0x38a54; + pc = 0x38a00; + continue; + case 0x38a54: + r16 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x38a8c; + continue; + } + case 0x38a64: + r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + if (r2 != r17) { + /* Next insn is delay slot */ + pc = 0x38a30; + continue; + } + r4 = r16 + r0; + r5 = r18 + r0; + /* Next insn is delay slot */ + pc = r19; + r31 = 0x38a84; + return; + case 0x38a84: + /* Next insn is delay slot */ + pc = 0x38a30; + continue; + case 0x38a8c: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x38c00: + pc = 0x38c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_38c00() throws ExecutionException { /* 0x38c00 - 0x38e00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x38c00: + r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r7 = r2 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x38d04; + continue; + } + case 0x38c14: + r9 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + addr = r9 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r10 = tmp; + r2 = r9 + 1; + if (r10 == r0) { + /* Next insn is delay slot */ + pc = 0x38cf8; + continue; + } + r3 = r10 + r0; + r8 = r0 + r0; + case 0x38c34: + r4 = r8 >>> 25; + r8 = r8 << 7; + r8 = r8 | r4; + r2 = r2 + 1; + r8 = r3 ^ r8; + addr = r2 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r3 = tmp; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x38c34; + continue; + } + case 0x38c58: + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x38c84; + continue; + } + case 0x38c60: + r2 = readPages[(r7 + 8) >>> 12][((r7 + 8) >>> 2) & 0x3ff]; + r3 = ((r2 & 0xffffffffL) < (r8 & 0xffffffffL)) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x38c90; + continue; + } + r7 = readPages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff]; + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x38c60; + continue; + } + case 0x38c84: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x38c90: + if (r2 == r8) { + /* Next insn is delay slot */ + pc = 0x38ca4; + continue; + } + case 0x38c98: + r7 = readPages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x38c58; + continue; + case 0x38ca4: + r2 = readPages[(r7 + 12) >>> 12][((r7 + 12) >>> 2) & 0x3ff]; + r4 = r10 + r0; + r3 = r9 + r0; + /* Next insn is delay slot */ + pc = 0x38cc4; + continue; + case 0x38cb8: + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x38ce0; + continue; + } + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r4 = tmp; + case 0x38cc4: + r2 = r2 + 1; + addr = r2 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r6 = tmp; + r3 = r3 + 1; + if (r6 == r4) { + /* Next insn is delay slot */ + pc = 0x38cb8; + continue; + } + /* Next insn is delay slot */ + pc = 0x38c98; + continue; + case 0x38ce0: + r2 = readPages[(r7 + 16) >>> 12][((r7 + 16) >>> 2) & 0x3ff]; + writePages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff] = r2; + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x38cf8: + r8 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x38c58; + continue; + case 0x38d04: + r3 = readPages[(r4 + 28) >>> 12][((r4 + 28) >>> 2) & 0x3ff]; + r12 = r4 + r0; + r11 = r4 + 20; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x38e5c; + run_38e00(); + return; + } + case 0x38d18: + r10 = r11 + 20; + r3 = readPages[(r10 + -8) >>> 12][((r10 + -8) >>> 2) & 0x3ff]; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r7 = tmp; + r8 = r3 + 1; + r3 = r0 + r0; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x38d5c; + continue; + } + case 0x38d38: + r9 = r3 >>> 25; + r3 = r3 << 7; + r3 = r3 | r9; + r8 = r8 + 1; + r3 = r7 ^ r3; + addr = r8 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r7 = tmp; + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x38d38; + continue; + } + case 0x38d5c: + writePages[(r10 + -12) >>> 12][((r10 + -12) >>> 2) & 0x3ff] = r3; + r7 = r4 + r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x38d94; + continue; + } + case 0x38d6c: + r7 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r7 = ((r7 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x38db8; + continue; + } + r7 = r2 + r0; + r2 = readPages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff]; + case 0x38d8c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x38d6c; + continue; + } + case 0x38d94: + writePages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff] = r11; + r2 = readPages[(r10 + 8) >>> 12][((r10 + 8) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x38dc8; + continue; + } + r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r11 = r10 + r0; + /* Next insn is delay slot */ + pc = 0x38d18; + continue; + case 0x38db8: + r7 = r2 + 4; + r2 = readPages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x38d8c; + continue; + case 0x38dc8: + r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + case 0x38dcc: + r3 = readPages[(r10 + 12) >>> 12][((r10 + 12) >>> 2) & 0x3ff]; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r7 = tmp; + r8 = r3 + 1; + r3 = r0 + r0; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x38e0c; + run_38e00(); + return; + } + case 0x38de8: + r9 = r3 >>> 25; + r3 = r3 << 7; + r3 = r3 | r9; + r8 = r8 + 1; + r3 = r7 ^ r3; + addr = r8 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r7 = tmp; + case 0x38e00: + pc = 0x38e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_38e00() throws ExecutionException { /* 0x38e00 - 0x39000 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x38e00: + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x38de8; + run_38c00(); + return; + } + case 0x38e0c: + writePages[(r10 + 8) >>> 12][((r10 + 8) >>> 2) & 0x3ff] = r3; + case 0x38e10: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x38e4c; + continue; + } + r7 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + r7 = ((r7 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x38e3c; + continue; + } + r12 = r2 + r0; + r2 = readPages[(r12 + 0) >>> 12][((r12 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x38e10; + continue; + case 0x38e3c: + r12 = r2 + 4; + r2 = readPages[(r12 + 0) >>> 12][((r12 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x38e10; + continue; + case 0x38e4c: + writePages[(r12 + 0) >>> 12][((r12 + 0) >>> 2) & 0x3ff] = r10; + r7 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x38c14; + run_38c00(); + return; + case 0x38e5c: + r10 = r11 + r0; + /* Next insn is delay slot */ + pc = 0x38dcc; + run_38c00(); + return; + case 0x39000: + pc = 0x39000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_39000() throws ExecutionException { /* 0x39000 - 0x39200 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x39000: + r29 = r29 + -48; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r20; + r20 = 6 << 16; + r10 = readPages[(r20 + -24536) >>> 12][((r20 + -24536) >>> 2) & 0x3ff]; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + addr = r10 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r11 = tmp; + r18 = r4 + r0; + r3 = r10 + 1; + if (r11 == r0) { + /* Next insn is delay slot */ + pc = 0x391e0; + continue; + } + r8 = r11 + r0; + r2 = r0 + r0; + case 0x39040: r9 = r2 >>> 25; r2 = r2 << 7; r2 = r2 | r9; - r8 = r8 + 1; - r2 = r3 ^ r2; - addr=r8+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x31238; + r3 = r3 + 1; + r2 = r8 ^ r2; + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r8 = tmp; + if (r8 != r0) { + /* Next insn is delay slot */ + pc = 0x39040; continue; } - case 0x3125c: + case 0x39064: r17 = r2 ^ r6; r2 = r17 >>> 16; r2 = r2 ^ r17; @@ -35631,1040 +34897,858 @@ public final class AcmeCrossAssembler extends UnixRuntime { r16 = r16 & 255; r16 = r16 << 2; r16 = r5 + r16; - case 0x3127c: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x312b4; + case 0x39084: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x390bc; continue; } - case 0x3128c: - r3 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; + case 0x39094: + r3 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; r5 = ((r3 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x312e0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x390ec; continue; } r16 = r2 + r0; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3128c; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x39094; continue; } - case 0x312b4: - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x31368; + case 0x390bc: + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x39178; continue; } - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r0; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r0; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x312e0: - if(r17 == r3) { - /* Next insn is delay slot */ - pc=0x312f4; + case 0x390ec: + if (r17 == r3) { + /* Next insn is delay slot */ + pc = 0x39100; continue; } - case 0x312e8: + case 0x390f4: r16 = r2 + 4; - /* Next insn is delay slot */ - pc=0x3127c; + /* Next insn is delay slot */ + pc = 0x39084; continue; - case 0x312f4: - r3 = readPages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff]; - if(r6 != r3) { - /* Next insn is delay slot */ - pc=0x312e8; + case 0x39100: + r3 = readPages[(r2 + 20) >>> 12][((r2 + 20) >>> 2) & 0x3ff]; + if (r3 != r6) { + /* Next insn is delay slot */ + pc = 0x390f4; continue; } - r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r3 = r10 + r0; - /* Next insn is delay slot */ - pc=0x3131c; + r3 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r8 = r11 + r0; + r5 = r10 + r0; + /* Next insn is delay slot */ + pc = 0x39130; continue; - case 0x31314: - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x31340; + case 0x39124: + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x3914c; continue; } - case 0x3131c: - r3 = r3 + 1; - r5 = r5 + 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r9 = tmp; - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r5 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r8 = tmp; - if(r8 == r9) { - /* Next insn is delay slot */ - pc=0x31314; + case 0x39130: + r3 = r3 + 1; + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r9 = tmp; + r5 = r5 + 1; + if (r9 == r8) { + /* Next insn is delay slot */ + pc = 0x39124; continue; } - /* Next insn is delay slot */ - pc=0x312e8; + /* Next insn is delay slot */ + pc = 0x390f4; continue; - case 0x31340: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + case 0x3914c: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r2; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r2 = r0 + r0; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x31368: + case 0x39178: r4 = r0 + 24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x31378; - pc=0x1b400; - run_1b400(); return; - case 0x31378: - r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r4 = readPages[(r28+-30596)>>>12][((r28+-30596)>>>2)&0x3ff]; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r17; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = r6; - r18 = r2 + r0; - /* Next insn is delay slot */ - r31=0x3139c; - pc=0x17a00; - run_17a00(); return; - case 0x3139c: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - writePages[(r18+12)>>>12][((r18+12)>>>2)&0x3ff] = r2; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + r31 = 0x39188; + pc = 0x20800; + run_20800(); + return; + case 0x39188: + r6 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r17; + r4 = r20 + -24536; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 20) >>> 12][((r2 + 20) >>> 2) & 0x3ff] = r6; + r19 = r2 + r0; + /* Next insn is delay slot */ + r31 = 0x391ac; + pc = 0x1c800; + run_1c800(); + return; + case 0x391ac: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + writePages[(r19 + 12) >>> 12][((r19 + 12) >>> 2) & 0x3ff] = r2; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r19; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r19; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; r2 = r0 + 1; - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r18; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x31400: - pc=0x31400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_31400() throws ExecutionException { /* 0x31400 - 0x31600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x31400: - r29 = r29 + -64; - r3 = r4 + r0; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r23; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r4; - r30 = r5 + r0; - r17 = r6 + r0; - r16 = r7 + r0; - case 0x31440: - r2 = readPages[(r3+20)>>>12][((r3+20)>>>2)&0x3ff]; - if(r2 != r30) { - /* Next insn is delay slot */ - pc=0x31460; - continue; - } - r4 = r3 + r0; - r5 = r16 + r0; - /* Next insn is delay slot */ - pc=r17; - r31=0x31460; - return; - case 0x31460: - r2 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3169c; - run_31600(); return; - } - case 0x3147c: - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = readPages[(r3+20)>>>12][((r3+20)>>>2)&0x3ff]; - if(r2 != r30) { - /* Next insn is delay slot */ - pc=0x314a4; - continue; - } - r4 = r3 + r0; - r5 = r16 + r0; - /* Next insn is delay slot */ - pc=r17; - r31=0x314a4; - return; - case 0x314a4: - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x31680; - run_31600(); return; - } - case 0x314c0: - r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = readPages[(r3+20)>>>12][((r3+20)>>>2)&0x3ff]; - if(r2 != r30) { - /* Next insn is delay slot */ - pc=0x314e8; - continue; - } - r4 = r3 + r0; - r5 = r16 + r0; - /* Next insn is delay slot */ - pc=r17; - r31=0x314e8; - return; - case 0x314e8: - r2 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r22 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x31664; - run_31600(); return; - } - case 0x31500: - r2 = readPages[(r22+20)>>>12][((r22+20)>>>2)&0x3ff]; - if(r2 != r30) { - /* Next insn is delay slot */ - pc=0x31520; - continue; - } - r4 = r22 + r0; - r5 = r16 + r0; - /* Next insn is delay slot */ - pc=r17; - r31=0x31520; - return; - case 0x31520: - r23 = readPages[(r22+0)>>>12][((r22+0)>>>2)&0x3ff]; - if(r23 == r0) { - /* Next insn is delay slot */ - pc=0x31654; - run_31600(); return; - } - case 0x31530: - r2 = readPages[(r23+20)>>>12][((r23+20)>>>2)&0x3ff]; - if(r2 == r30) { - /* Next insn is delay slot */ - pc=0x31734; - run_31600(); return; - } - case 0x31540: - r20 = readPages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff]; - if(r20 == r0) { - /* Next insn is delay slot */ - pc=0x31644; - run_31600(); return; - } - case 0x31550: - r2 = readPages[(r20+20)>>>12][((r20+20)>>>2)&0x3ff]; - if(r30 == r2) { - /* Next insn is delay slot */ - pc=0x3171c; - run_31600(); return; - } - case 0x31560: - r19 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x31634; - run_31600(); return; - } - case 0x31570: - r2 = readPages[(r19+20)>>>12][((r19+20)>>>2)&0x3ff]; - if(r30 == r2) { - /* Next insn is delay slot */ - pc=0x31704; - run_31600(); return; - } - case 0x31580: - r18 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x31624; - run_31600(); return; - } - case 0x31590: - r2 = readPages[(r18+20)>>>12][((r18+20)>>>2)&0x3ff]; - if(r30 == r2) { - /* Next insn is delay slot */ - pc=0x316ec; - run_31600(); return; - } - case 0x315a0: - r21 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; - if(r21 != r0) { - /* Next insn is delay slot */ - pc=0x315ec; - continue; - } - /* Next insn is delay slot */ - pc=0x31614; - run_31600(); return; - case 0x315b8: - r4 = readPages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x315dc; - continue; - } - r5 = r30 + r0; - r6 = r17 + r0; - r7 = r16 + r0; - /* Next insn is delay slot */ - r31=0x315dc; - pc=0x31400; + case 0x391e0: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x39064; continue; - case 0x315dc: - r21 = readPages[(r21+4)>>>12][((r21+4)>>>2)&0x3ff]; - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x31614; - run_31600(); return; - } - case 0x315ec: - r3 = readPages[(r21+20)>>>12][((r21+20)>>>2)&0x3ff]; - if(r30 != r3) { - /* Next insn is delay slot */ - pc=0x315b8; - continue; - } - r4 = r21 + r0; - case 0x31600: - pc=0x31600; + case 0x39200: + pc = 0x39200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_31600() throws ExecutionException { /* 0x31600 - 0x31800 */ + + private final void run_39200() throws ExecutionException { /* 0x39200 - 0x39400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x31600: - r5 = r16 + r0; - /* Next insn is delay slot */ - pc=r17; - r31=0x3160c; - return; - case 0x3160c: - /* Next insn is delay slot */ - pc=0x315b8; - run_31400(); return; - case 0x31614: - r18 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x31590; - run_31400(); return; - } - case 0x31624: - r19 = readPages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff]; - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x31570; - run_31400(); return; - } - case 0x31634: - r20 = readPages[(r20+4)>>>12][((r20+4)>>>2)&0x3ff]; - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x31550; - run_31400(); return; - } - case 0x31644: - r23 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; - if(r23 != r0) { - /* Next insn is delay slot */ - pc=0x31530; - run_31400(); return; - } - case 0x31654: - r22 = readPages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff]; - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x31500; - run_31400(); return; - } - case 0x31664: - r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x314c0; - run_31400(); return; - } - case 0x31680: - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3147c; - run_31400(); return; - } - case 0x3169c: - r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r3 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r3; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x31440; - run_31400(); return; - } - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x316ec: - r4 = r18 + r0; - r5 = r16 + r0; - /* Next insn is delay slot */ - pc=r17; - r31=0x316fc; - return; - case 0x316fc: - /* Next insn is delay slot */ - pc=0x315a0; - run_31400(); return; - case 0x31704: - r4 = r19 + r0; - r5 = r16 + r0; - /* Next insn is delay slot */ - pc=r17; - r31=0x31714; - return; - case 0x31714: - /* Next insn is delay slot */ - pc=0x31580; - run_31400(); return; - case 0x3171c: - r4 = r20 + r0; - r5 = r16 + r0; - /* Next insn is delay slot */ - pc=r17; - r31=0x3172c; - return; - case 0x3172c: - /* Next insn is delay slot */ - pc=0x31560; - run_31400(); return; - case 0x31734: - r4 = r23 + r0; - r5 = r16 + r0; - /* Next insn is delay slot */ - pc=r17; - r31=0x31744; - return; - case 0x31744: - /* Next insn is delay slot */ - pc=0x31540; - run_31400(); return; - case 0x31800: - pc=0x31800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_31800() throws ExecutionException { /* 0x31800 - 0x31a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x31800: - r29 = r29 + -48; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r20 = r4 + r0; - r17 = r5 + r0; + for (;;) { + switch (pc) { + case 0x39200: + r29 = r29 + -40; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + r20 = r5 + r0; r19 = r6 + r0; r18 = r7 + r0; - r21 = r4 + 1024; - case 0x31834: - r16 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x31880; + r17 = r4 + 1024; + case 0x39230: + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x39254; continue; } - /* Next insn is delay slot */ - pc=0x318a8; - continue; - case 0x3184c: - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x31870; - continue; - } - r5 = r17 + r0; + r5 = r20 + r0; r6 = r19 + r0; r7 = r18 + r0; - /* Next insn is delay slot */ - r31=0x31870; - pc=0x31400; - run_31400(); return; - case 0x31870: - r16 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x318a8; + /* Next insn is delay slot */ + r31 = 0x39254; + pc = 0x38a00; + run_38a00(); + return; + case 0x39254: + r16 = r16 + 4; + if (r16 != r17) { + /* Next insn is delay slot */ + pc = 0x39230; continue; } - case 0x31880: - r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; - if(r2 != r17) { - /* Next insn is delay slot */ - pc=0x3184c; - continue; - } - r4 = r16 + r0; - r5 = r18 + r0; - /* Next insn is delay slot */ - pc=r19; - r31=0x318a0; + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; return; - case 0x318a0: - /* Next insn is delay slot */ - pc=0x3184c; - continue; - case 0x318a8: - r20 = r20 + 4; - if(r20 != r21) { - /* Next insn is delay slot */ - pc=0x31834; - continue; - } - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + case 0x39400: + pc = 0x39400; return; - case 0x31a00: - pc=0x31a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_31a00() throws ExecutionException { /* 0x31a00 - 0x31c00 */ + + private final void run_39400() throws ExecutionException { /* 0x39400 - 0x39600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x31a00: - r2 = readPages[(r28+-30656)>>>12][((r28+-30656)>>>2)&0x3ff]; - r3 = readPages[(r28+-30660)>>>12][((r28+-30660)>>>2)&0x3ff]; - r2 = r3 | r2; - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x39400: + r2 = 6 << 16; + r2 = readPages[(r2 + -10296) >>> 12][((r2 + -10296) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x39434; + continue; + } + r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x39434; + continue; + } + r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3943c; + continue; + } + case 0x39434: + /* Next insn is delay slot */ + pc = r31; return; - case 0x31c00: - pc=0x31c00; + case 0x3943c: + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + -28580; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x39600: + pc = 0x39600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_31c00() throws ExecutionException { /* 0x31c00 - 0x31e00 */ + + private final void run_39600() throws ExecutionException { /* 0x39600 - 0x39800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x31c00: - r29 = r29 + -24; + for (;;) { + switch (pc) { + case 0x39600: + r2 = 6 << 16; + r2 = readPages[(r2 + -10296) >>> 12][((r2 + -10296) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x39648; + continue; + } + r2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x39648; + continue; + } + r3 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; r2 = r0 + 1; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r16 = readPages[(r28+-30656)>>>12][((r28+-30656)>>>2)&0x3ff]; - writePages[(r28+-30656)>>>12][((r28+-30656)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x31c20; - pc=0x1b600; - run_1b600(); return; - case 0x31c20: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30656)>>>12][((r28+-30656)>>>2)&0x3ff] = r16; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x39648; + continue; + } + r5 = 6 << 16; + r4 = r0 + -1; + r5 = r5 + -28548; + /* Next insn is delay slot */ + pc = 0x20600; + run_20600(); return; - case 0x31e00: - pc=0x31e00; + case 0x39648: + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x39800: + pc = 0x39800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_31e00() throws ExecutionException { /* 0x31e00 - 0x32000 */ + + private final void run_39800() throws ExecutionException { /* 0x39800 - 0x39a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x31e00: - writePages[(r28+-30660)>>>12][((r28+-30660)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x32000: - pc=0x32000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_32000() throws ExecutionException { /* 0x32000 - 0x32200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x32000: - r2 = readPages[(r28+-30740)>>>12][((r28+-30740)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x32034; - continue; - } - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x32034; - continue; - } - r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3203c; - continue; - } - case 0x32034: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x3203c: - r4 = 7 << 16; - r4 = r4 + -484; - /* Next insn is delay slot */ - pc=0x1ac00; - run_1ac00(); return; - case 0x32200: - pc=0x32200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_32200() throws ExecutionException { /* 0x32200 - 0x32400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x32200: - r2 = readPages[(r28+-30740)>>>12][((r28+-30740)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x32244; - continue; - } - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r2 = r2 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x32244; - continue; - } - r3 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - r2 = r0 + 1; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x32244; - continue; - } - r4 = 7 << 16; - r4 = r4 + -452; - /* Next insn is delay slot */ - pc=0x1ac00; - run_1ac00(); return; - case 0x32244: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x32400: - pc=0x32400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_32400() throws ExecutionException { /* 0x32400 - 0x32600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x32400: + for (;;) { + switch (pc) { + case 0x39800: r29 = r29 + -32; r2 = f13; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; r16 = 32767 << 16; r16 = r16 | 65535; r16 = r16 & r2; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; r17 = r2 + r0; r2 = 17424 << 16; r2 = r16 < r2 ? 1 : 0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; f0 = f12; f1 = f13; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x32480; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x39880; continue; } r2 = 32752 << 16; r3 = r2 + 1; r3 = r16 < r3 ? 1 : 0; r5 = f12; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x32608; - run_32600(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x39a08; + run_39a00(); + return; } - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x32600; - run_32600(); return; + if (r16 == r2) { + /* Next insn is delay slot */ + pc = 0x39a00; + run_39a00(); + return; } - case 0x32458: - if(r17 <= 0) { - /* Next insn is delay slot */ - pc=0x326bc; - run_32600(); return; + case 0x39858: + if (r17 <= 0) { + /* Next insn is delay slot */ + pc = 0x39abc; + run_39a00(); + return; } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f0 = readPages[(r28+-32220)>>>12][((r28+-32220)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f1 = readPages[(r28+-32224)>>>12][((r28+-32224)>>>2)&0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f0 = readPages[(r28 + -32660) >>> 12][((r28 + -32660) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32664) >>> 12][((r28 + -32664) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x32480: + case 0x39880: r2 = 16348 << 16; r2 = r16 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x32660; - run_32600(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x39a60; + run_39a00(); + return; } r2 = 15904 << 16; r16 = r16 < r2 ? 1 : 0; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x32624; - run_32600(); return; + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x39a24; + run_39a00(); + return; } - case 0x324a0: + case 0x398a0: r2 = r0 + -1; - case 0x324a4: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f6 = readPages[(r28+-32164)>>>12][((r28+-32164)>>>2)&0x3ff]; - f8 = readPages[(r28+-32156)>>>12][((r28+-32156)>>>2)&0x3ff]; - f7 = readPages[(r28+-32168)>>>12][((r28+-32168)>>>2)&0x3ff]; - f9 = readPages[(r28+-32160)>>>12][((r28+-32160)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - r3 = r0 + -1; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f8 = readPages[(r28+-32148)>>>12][((r28+-32148)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f9 = readPages[(r28+-32152)>>>12][((r28+-32152)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f8 = readPages[(r28+-32140)>>>12][((r28+-32140)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f9 = readPages[(r28+-32144)>>>12][((r28+-32144)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f8 = readPages[(r28+-32132)>>>12][((r28+-32132)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f9 = readPages[(r28+-32136)>>>12][((r28+-32136)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f8 = readPages[(r28+-32124)>>>12][((r28+-32124)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f9 = readPages[(r28+-32128)>>>12][((r28+-32128)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f8 = readPages[(r28+-32108)>>>12][((r28+-32108)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f6 = readPages[(r28+-32116)>>>12][((r28+-32116)>>>2)&0x3ff]; - f9 = readPages[(r28+-32112)>>>12][((r28+-32112)>>>2)&0x3ff]; - f7 = readPages[(r28+-32120)>>>12][((r28+-32120)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f8 = readPages[(r28+-32100)>>>12][((r28+-32100)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f9 = readPages[(r28+-32104)>>>12][((r28+-32104)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f8 = readPages[(r28+-32092)>>>12][((r28+-32092)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f9 = readPages[(r28+-32096)>>>12][((r28+-32096)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f8 = readPages[(r28+-32084)>>>12][((r28+-32084)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f9 = readPages[(r28+-32088)>>>12][((r28+-32088)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x326e8; - run_32600(); return; - } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - r5 = 7 << 16; - r6 = 7 << 16; + case 0x398a4: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f6 = readPages[(r28 + -32604) >>> 12][((r28 + -32604) >>> 2) & 0x3ff]; + f8 = readPages[(r28 + -32596) >>> 12][((r28 + -32596) >>> 2) & 0x3ff]; + f7 = readPages[(r28 + -32608) >>> 12][((r28 + -32608) >>> 2) & 0x3ff]; + f9 = readPages[(r28 + -32600) >>> 12][((r28 + -32600) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + r3 = r0 + -1; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f8 = readPages[(r28 + -32588) >>> 12][((r28 + -32588) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f9 = readPages[(r28 + -32592) >>> 12][((r28 + -32592) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f8 = readPages[(r28 + -32580) >>> 12][((r28 + -32580) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f9 = readPages[(r28 + -32584) >>> 12][((r28 + -32584) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f8 = readPages[(r28 + -32572) >>> 12][((r28 + -32572) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f9 = readPages[(r28 + -32576) >>> 12][((r28 + -32576) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f8 = readPages[(r28 + -32564) >>> 12][((r28 + -32564) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f9 = readPages[(r28 + -32568) >>> 12][((r28 + -32568) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f8 = readPages[(r28 + -32548) >>> 12][((r28 + -32548) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f6 = readPages[(r28 + -32556) >>> 12][((r28 + -32556) >>> 2) & 0x3ff]; + f9 = readPages[(r28 + -32552) >>> 12][((r28 + -32552) >>> 2) & 0x3ff]; + f7 = readPages[(r28 + -32560) >>> 12][((r28 + -32560) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f8 = readPages[(r28 + -32540) >>> 12][((r28 + -32540) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f9 = readPages[(r28 + -32544) >>> 12][((r28 + -32544) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f8 = readPages[(r28 + -32532) >>> 12][((r28 + -32532) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f9 = readPages[(r28 + -32536) >>> 12][((r28 + -32536) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f8 = readPages[(r28 + -32524) >>> 12][((r28 + -32524) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f9 = readPages[(r28 + -32528) >>> 12][((r28 + -32528) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x39ae8; + run_39a00(); + return; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + r5 = 6 << 16; + r6 = 6 << 16; r4 = r2 << 3; - r5 = r5 + -384; - r6 = r6 + -416; - r5 = r4 + r5; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + r5 = r5 + -28480; + r6 = r6 + -28512; + r5 = r4 + r5; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r4 = r4 + r6; - f6 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - f7 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f2 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; - f3 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + f6 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + f7 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f2 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; + f3 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } r3 = f4; r2 = f5; - if(r17 < 0) { - /* Next insn is delay slot */ - pc=0x326d0; - run_32600(); return; + if (r17 < 0) { + /* Next insn is delay slot */ + pc = 0x39ad0; + run_39a00(); + return; } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; f0 = r3; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; f1 = r2; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x32600: - pc=0x32600; + case 0x39a00: + pc = 0x39a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_32600() throws ExecutionException { /* 0x32600 - 0x32800 */ + + private final void run_39a00() throws ExecutionException { /* 0x39a00 - 0x39c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x32600: - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x32458; - run_32400(); return; + for (;;) { + switch (pc) { + case 0x39a00: + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x39858; + run_39800(); + return; } - case 0x32608: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - case 0x3260c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + case 0x39a08: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + case 0x39a0c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x32624: - f4 = readPages[(r28+-32204)>>>12][((r28+-32204)>>>2)&0x3ff]; - f2 = readPages[(r28+-32196)>>>12][((r28+-32196)>>>2)&0x3ff]; - f5 = readPages[(r28+-32208)>>>12][((r28+-32208)>>>2)&0x3ff]; - f3 = readPages[(r28+-32200)>>>12][((r28+-32200)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x324a0; - run_32400(); return; + case 0x39a24: + f4 = readPages[(r28 + -32644) >>> 12][((r28 + -32644) >>> 2) & 0x3ff]; + f2 = readPages[(r28 + -32636) >>> 12][((r28 + -32636) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -32648) >>> 12][((r28 + -32648) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32640) >>> 12][((r28 + -32640) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) < (Double + .longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x398a0; + run_39800(); + return; } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x32660: - /* Next insn is delay slot */ - r31=0x32668; - pc=0x32a00; - run_32a00(); return; - case 0x32668: + case 0x39a60: + /* Next insn is delay slot */ + r31 = 0x39a68; + pc = 0x39e00; + run_39e00(); + return; + case 0x39a68: r2 = 16371 << 16; r2 = r16 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x326fc; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x39afc; continue; } r2 = 16358 << 16; r16 = r16 < r2 ? 1 : 0; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x32758; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x39b58; continue; } - f2 = readPages[(r28+-32196)>>>12][((r28+-32196)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f3 = readPages[(r28+-32200)>>>12][((r28+-32200)>>>2)&0x3ff]; - r2 = r0 + r0; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-32188)>>>12][((r28+-32188)>>>2)&0x3ff]; - f5 = readPages[(r28+-32192)>>>12][((r28+-32192)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x324a4; - run_32400(); return; - case 0x326bc: - f0 = readPages[(r28+-32212)>>>12][((r28+-32212)>>>2)&0x3ff]; - f1 = readPages[(r28+-32216)>>>12][((r28+-32216)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x3260c; + f2 = readPages[(r28 + -32636) >>> 12][((r28 + -32636) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f3 = readPages[(r28 + -32640) >>> 12][((r28 + -32640) >>> 2) & 0x3ff]; + r2 = r0 + r0; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -32628) >>> 12][((r28 + -32628) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -32632) >>> 12][((r28 + -32632) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x398a4; + run_39800(); + return; + case 0x39abc: + f0 = readPages[(r28 + -32652) >>> 12][((r28 + -32652) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32656) >>> 12][((r28 + -32656) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x39a0c; continue; - case 0x326d0: + case 0x39ad0: r6 = 32768 << 16; f0 = r3; r4 = r2 ^ r6; f1 = r4; - /* Next insn is delay slot */ - pc=0x3260c; + /* Next insn is delay slot */ + pc = 0x39a0c; continue; - case 0x326e8: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x3260c; + case 0x39ae8: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x39a0c; continue; - case 0x326fc: + case 0x39afc: r2 = 16387 << 16; r2 = r2 | 32768; r16 = r16 < r2 ? 1 : 0; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x3273c; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x39b3c; continue; } - f2 = readPages[(r28+-32180)>>>12][((r28+-32180)>>>2)&0x3ff]; - f6 = readPages[(r28+-32196)>>>12][((r28+-32196)>>>2)&0x3ff]; - f3 = readPages[(r28+-32184)>>>12][((r28+-32184)>>>2)&0x3ff]; - f7 = readPages[(r28+-32200)>>>12][((r28+-32200)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r2 = r0 + 2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x324a4; - run_32400(); return; - case 0x3273c: - f2 = readPages[(r28+-32172)>>>12][((r28+-32172)>>>2)&0x3ff]; - r2 = r0 + 3; - f3 = readPages[(r28+-32176)>>>12][((r28+-32176)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x324a4; - run_32400(); return; - case 0x32758: - f2 = readPages[(r28+-32196)>>>12][((r28+-32196)>>>2)&0x3ff]; - r2 = r0 + 1; - f3 = readPages[(r28+-32200)>>>12][((r28+-32200)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x324a4; - run_32400(); return; - case 0x32800: - pc=0x32800; + f2 = readPages[(r28 + -32620) >>> 12][((r28 + -32620) >>> 2) & 0x3ff]; + f6 = readPages[(r28 + -32636) >>> 12][((r28 + -32636) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32624) >>> 12][((r28 + -32624) >>> 2) & 0x3ff]; + f7 = readPages[(r28 + -32640) >>> 12][((r28 + -32640) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r2 = r0 + 2; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x398a4; + run_39800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x39b3c: + f2 = readPages[(r28 + -32612) >>> 12][((r28 + -32612) >>> 2) & 0x3ff]; + r2 = r0 + 3; + f3 = readPages[(r28 + -32616) >>> 12][((r28 + -32616) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x398a4; + run_39800(); + return; + case 0x39b58: + f2 = readPages[(r28 + -32636) >>> 12][((r28 + -32636) >>> 2) & 0x3ff]; + r2 = r0 + 1; + f3 = readPages[(r28 + -32640) >>> 12][((r28 + -32640) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x398a4; + run_39800(); + return; + case 0x39c00: + pc = 0x39c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_32800() throws ExecutionException { /* 0x32800 - 0x32a00 */ + + private final void run_39c00() throws ExecutionException { /* 0x39c00 - 0x39e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x32800: + for (;;) { + switch (pc) { + case 0x39c00: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; @@ -36673,151 +35757,164 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = r3 + 8700; r29 = r29 + -48; r3 = r2 < r3 ? 1 : 0; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x328bc; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x39cbc; continue; } r3 = 32752 << 16; r2 = r2 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x32860; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x39c60; continue; - } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r3 = f2; r2 = f3; - case 0x32848: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + case 0x39c48: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; f0 = r3; r29 = r29 + 48; f1 = r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x32860: + case 0x39c60: r6 = r29 + 24; - /* Next insn is delay slot */ - r31=0x3286c; - pc=0x35200; - run_35200(); return; - case 0x3286c: + /* Next insn is delay slot */ + r31 = 0x39c6c; + pc = 0x3c600; + run_3c600(); + return; + case 0x39c6c: r2 = r2 & 3; r3 = r0 + 1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x32934; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x39d34; continue; } r4 = r0 + 2; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x328f0; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x39cf0; continue; } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x32958; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x39d58; continue; } - f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x328ac; - pc=0x36e00; - run_36e00(); return; - case 0x328ac: + f12 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f14 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f13 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f15 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x39cac; + pc = 0x3e200; + run_3e200(); + return; + case 0x39cac: r3 = f0; r2 = f1; - /* Next insn is delay slot */ - pc=0x32848; + /* Next insn is delay slot */ + pc = 0x39c48; continue; - case 0x328bc: + case 0x39cbc: f14 = r0; f15 = r0; - /* Next insn is delay slot */ - r31=0x328d0; - pc=0x35c00; - run_35c00(); return; - case 0x328d0: + /* Next insn is delay slot */ + r31 = 0x39cd0; + pc = 0x3d000; + run_3d000(); + return; + case 0x39cd0: r3 = f0; r2 = f1; - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; f0 = r3; r29 = r29 + 48; f1 = r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x328f0: - f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x32908; - pc=0x35c00; - run_35c00(); return; - case 0x32908: + case 0x39cf0: + f12 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f14 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f13 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f15 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x39d08; + pc = 0x3d000; + run_3d000(); + return; + case 0x39d08: r5 = f0; r4 = f1; r3 = r5 + r0; - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r6 = 32768 << 16; f0 = r3; r2 = r4 ^ r6; f1 = r2; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x32934: - f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x32950; - pc=0x36e00; - run_36e00(); return; - case 0x32950: - /* Next insn is delay slot */ - pc=0x32908; + case 0x39d34: + f12 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f14 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f13 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f15 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x39d50; + pc = 0x3e200; + run_3e200(); + return; + case 0x39d50: + /* Next insn is delay slot */ + pc = 0x39d08; continue; - case 0x32958: - f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x32970; - pc=0x35c00; - run_35c00(); return; - case 0x32970: + case 0x39d58: + f12 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f14 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f13 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f15 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x39d70; + pc = 0x3d000; + run_3d000(); + return; + case 0x39d70: r3 = f0; r2 = f1; - /* Next insn is delay slot */ - pc=0x32848; + /* Next insn is delay slot */ + pc = 0x39c48; continue; - case 0x32a00: - pc=0x32a00; + case 0x39e00: + pc = 0x39e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_32a00() throws ExecutionException { /* 0x32a00 - 0x32c00 */ + + private final void run_39e00() throws ExecutionException { /* 0x39e00 - 0x3a000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x32a00: + for (;;) { + switch (pc) { + case 0x39e00: r3 = f12; r4 = f13; r5 = 32767 << 16; @@ -36825,22 +35922,24 @@ public final class AcmeCrossAssembler extends UnixRuntime { f0 = r3; r2 = r5 & r4; f1 = r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x32c00: - pc=0x32c00; + case 0x3a000: + pc = 0x3a000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_32c00() throws ExecutionException { /* 0x32c00 - 0x32e00 */ + + private final void run_3a000() throws ExecutionException { /* 0x3a000 - 0x3a200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x32c00: + for (;;) { + switch (pc) { + case 0x3a000: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; @@ -36849,152 +35948,165 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = r3 + 8700; r29 = r29 + -48; r3 = r2 < r3 ? 1 : 0; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x32cd4; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x3a0d4; continue; } r3 = 32752 << 16; r2 = r2 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x32c60; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3a060; continue; - } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r3 = f2; r2 = f3; - case 0x32c48: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + case 0x3a048: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; f0 = r3; r29 = r29 + 48; f1 = r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x32c60: + case 0x3a060: r6 = r29 + 24; - /* Next insn is delay slot */ - r31=0x32c6c; - pc=0x35200; - run_35200(); return; - case 0x32c6c: + /* Next insn is delay slot */ + r31 = 0x3a06c; + pc = 0x3c600; + run_3c600(); + return; + case 0x3a06c: r2 = r2 & 3; r3 = r0 + 1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x32d2c; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x3a12c; continue; } r4 = r0 + 2; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x32d08; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x3a108; continue; } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x32d54; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3a154; continue; } - f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x32ca8; - pc=0x35c00; - run_35c00(); return; - case 0x32ca8: + f12 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f14 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f13 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f15 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x3a0a8; + pc = 0x3d000; + run_3d000(); + return; + case 0x3a0a8: r5 = f0; r4 = f1; r3 = r5 + r0; - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r6 = 32768 << 16; f0 = r3; r2 = r4 ^ r6; f1 = r2; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x32cd4: + case 0x3a0d4: f14 = r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r0; f15 = r0; - /* Next insn is delay slot */ - r31=0x32ce8; - pc=0x36e00; - run_36e00(); return; - case 0x32ce8: + /* Next insn is delay slot */ + r31 = 0x3a0e8; + pc = 0x3e200; + run_3e200(); + return; + case 0x3a0e8: r3 = f0; r2 = f1; - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; f0 = r3; r29 = r29 + 48; f1 = r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x32d08: - f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x32d24; - pc=0x36e00; - run_36e00(); return; - case 0x32d24: - /* Next insn is delay slot */ - pc=0x32ca8; + case 0x3a108: + f12 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f14 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f13 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f15 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x3a124; + pc = 0x3e200; + run_3e200(); + return; + case 0x3a124: + /* Next insn is delay slot */ + pc = 0x3a0a8; continue; - case 0x32d2c: - f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x32d44; - pc=0x35c00; - run_35c00(); return; - case 0x32d44: + case 0x3a12c: + f12 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f14 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f13 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f15 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x3a144; + pc = 0x3d000; + run_3d000(); + return; + case 0x3a144: r3 = f0; r2 = f1; - /* Next insn is delay slot */ - pc=0x32c48; + /* Next insn is delay slot */ + pc = 0x3a048; continue; - case 0x32d54: - f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x32d70; - pc=0x36e00; - run_36e00(); return; - case 0x32d70: + case 0x3a154: + f12 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f14 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f13 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f15 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x3a170; + pc = 0x3e200; + run_3e200(); + return; + case 0x3a170: r3 = f0; r2 = f1; - /* Next insn is delay slot */ - pc=0x32c48; + /* Next insn is delay slot */ + pc = 0x3a048; continue; - case 0x32e00: - pc=0x32e00; + case 0x3a200: + pc = 0x3a200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_32e00() throws ExecutionException { /* 0x32e00 - 0x33000 */ + + private final void run_3a200() throws ExecutionException { /* 0x3a200 - 0x3a400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x32e00: + for (;;) { + switch (pc) { + case 0x3a200: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; @@ -37003,946 +36115,1066 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = r3 + 8700; r29 = r29 + -48; r3 = r2 < r3 ? 1 : 0; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x32e98; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x3a298; continue; } r3 = 32752 << 16; r2 = r2 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x32e50; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3a250; continue; } - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x32e50: + case 0x3a250: r6 = r29 + 24; - /* Next insn is delay slot */ - r31=0x32e5c; - pc=0x35200; - run_35200(); return; - case 0x32e5c: + /* Next insn is delay slot */ + r31 = 0x3a25c; + pc = 0x3c600; + run_3c600(); + return; + case 0x3a25c: r2 = r2 & 1; - f12 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f14 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; + f12 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f14 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; r3 = r0 + 1; r2 = r2 << 1; r2 = r3 - r2; - f13 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f15 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x32e88; - pc=0x37000; - run_37000(); return; - case 0x32e88: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + f13 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f15 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x3a288; + pc = 0x3e400; + run_3e400(); return; - case 0x32e98: + case 0x3a288: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x3a298: f14 = r0; r2 = r0 + 1; f15 = r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x32eb0; - pc=0x37000; - run_37000(); return; - case 0x32eb0: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x3a2b0; + pc = 0x3e400; + run_3e400(); + return; + case 0x3a2b0: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x33000: - pc=0x33000; + case 0x3a400: + pc = 0x3a400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_33000() throws ExecutionException { /* 0x33000 - 0x33200 */ + + private final void run_3a400() throws ExecutionException { /* 0x3a400 - 0x3a600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x33000: + for (;;) { + switch (pc) { + case 0x3a400: r29 = r29 + -80; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = f22; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = f23; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f20; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f21; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; + writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = f22; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = f23; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = f21; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; f20 = f12; f21 = f13; - /* Next insn is delay slot */ - r31=0x33024; - pc=0x33a00; - run_33a00(); return; - case 0x33024: - r3 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x3a424; + pc = 0x3ae00; + run_3ae00(); + return; + case 0x3a424: + r3 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; r2 = r0 + -1; f22 = f0; f23 = f1; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x3304c; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x3a44c; continue; } f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31=0x33044; - pc=0x37a00; - run_37a00(); return; - case 0x33044: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x33070; + /* Next insn is delay slot */ + r31 = 0x3a444; + pc = 0x3ee00; + run_3ee00(); + return; + case 0x3a444: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3a470; continue; } - case 0x3304c: - f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; + case 0x3a44c: + f20 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; f0 = f22; f1 = f23; - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f22 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - f23 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + f22 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + f23 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; r29 = r29 + 80; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x33070: + case 0x3a470: f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31=0x3307c; - pc=0x32a00; - run_32a00(); return; - case 0x3307c: - f2 = readPages[(r28+-32076)>>>12][((r28+-32076)>>>2)&0x3ff]; - f3 = readPages[(r28+-32080)>>>12][((r28+-32080)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x3304c; + /* Next insn is delay slot */ + r31 = 0x3a47c; + pc = 0x39e00; + run_39e00(); + return; + case 0x3a47c: + f2 = readPages[(r28 + -32516) >>> 12][((r28 + -32516) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32520) >>> 12][((r28 + -32520) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) < (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3a44c; continue; } r2 = r0 + 1; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r4 = 7 << 16; - r2 = 7 << 16; - r2 = r2 + -352; - r4 = r4 + -12264; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f20; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f21; - /* Next insn is delay slot */ - r31=0x330d4; - pc=0x37e00; - run_37e00(); return; - case 0x330d4: - r3 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + r4 = 5 << 16; + r2 = 6 << 16; + r2 = r2 + -28448; + r4 = r4 + 20504; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f21; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = f21; + /* Next insn is delay slot */ + r31 = 0x3a4d4; + pc = 0x3f200; + run_3f200(); + return; + case 0x3a4d4: + r3 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; r2 = r0 + 2; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x33138; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f0; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f1; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x3a538; continue; } r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x330f8; - pc=0x37c00; - run_37c00(); return; - case 0x330f8: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x33138; + /* Next insn is delay slot */ + r31 = 0x3a4f8; + pc = 0x3f000; + run_3f000(); + return; + case 0x3a4f8: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3a538; continue; } - case 0x33100: - r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x33150; + case 0x3a500: + r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3a550; continue; } - case 0x33110: - f0 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f22 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f1 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - f23 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; + case 0x3a510: + f0 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + f22 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + f1 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + f23 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; r29 = r29 + 80; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x33138: - /* Next insn is delay slot */ - r31=0x33140; - pc=0x38c00; - run_38c00(); return; - case 0x33140: + case 0x3a538: + /* Next insn is delay slot */ + r31 = 0x3a540; + pc = 0x40000; + run_40000(); + return; + case 0x3a540: r3 = r0 + 33; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x33100; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x3a500; continue; - case 0x33150: - /* Next insn is delay slot */ - r31=0x33158; - pc=0x38c00; - run_38c00(); return; - case 0x33158: - r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x33110; - continue; - case 0x33200: - pc=0x33200; + case 0x3a550: + /* Next insn is delay slot */ + r31 = 0x3a558; + pc = 0x40000; + run_40000(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3a558: + r3 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x3a510; + continue; + case 0x3a600: + pc = 0x3a600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_33200() throws ExecutionException { /* 0x33200 - 0x33400 */ + + private final void run_3a600() throws ExecutionException { /* 0x3a600 - 0x3a800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x33200: + for (;;) { + switch (pc) { + case 0x3a600: r29 = r29 + -80; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = f22; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = f23; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f20; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f21; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; + writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = f22; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = f23; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = f21; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; f20 = f12; f21 = f13; - /* Next insn is delay slot */ - r31=0x33224; - pc=0x34000; - run_34000(); return; - case 0x33224: - r3 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x3a624; + pc = 0x3b400; + run_3b400(); + return; + case 0x3a624: + r3 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; r2 = r0 + -1; f22 = f0; f23 = f1; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x3324c; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x3a64c; continue; } f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31=0x33244; - pc=0x37a00; - run_37a00(); return; - case 0x33244: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x33270; + /* Next insn is delay slot */ + r31 = 0x3a644; + pc = 0x3ee00; + run_3ee00(); + return; + case 0x3a644: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3a670; continue; } - case 0x3324c: - f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; + case 0x3a64c: + f20 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; f0 = f22; f1 = f23; - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f22 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - f23 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + f22 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + f23 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; r29 = r29 + 80; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x33270: + case 0x3a670: f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31=0x3327c; - pc=0x32a00; - run_32a00(); return; - case 0x3327c: - f2 = readPages[(r28+-32068)>>>12][((r28+-32068)>>>2)&0x3ff]; - f3 = readPages[(r28+-32072)>>>12][((r28+-32072)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x3324c; + /* Next insn is delay slot */ + r31 = 0x3a67c; + pc = 0x39e00; + run_39e00(); + return; + case 0x3a67c: + f2 = readPages[(r28 + -32508) >>> 12][((r28 + -32508) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32512) >>> 12][((r28 + -32512) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) < (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3a64c; continue; } r2 = r0 + 1; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r4 = 7 << 16; - r2 = 7 << 16; - r2 = r2 + -344; - r4 = r4 + -12264; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f20; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f21; - /* Next insn is delay slot */ - r31=0x332d4; - pc=0x37e00; - run_37e00(); return; - case 0x332d4: - r3 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + r4 = 5 << 16; + r2 = 6 << 16; + r2 = r2 + -28440; + r4 = r4 + 20504; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f21; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = f21; + /* Next insn is delay slot */ + r31 = 0x3a6d4; + pc = 0x3f200; + run_3f200(); + return; + case 0x3a6d4: + r3 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; r2 = r0 + 2; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x33338; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f0; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f1; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x3a738; continue; } r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x332f8; - pc=0x37c00; - run_37c00(); return; - case 0x332f8: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x33338; + /* Next insn is delay slot */ + r31 = 0x3a6f8; + pc = 0x3f000; + run_3f000(); + return; + case 0x3a6f8: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3a738; continue; } - case 0x33300: - r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x33350; + case 0x3a700: + r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3a750; continue; } - case 0x33310: - f0 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f22 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f1 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - f23 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; + case 0x3a710: + f0 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + f22 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + f1 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + f23 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; r29 = r29 + 80; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x33338: - /* Next insn is delay slot */ - r31=0x33340; - pc=0x38c00; - run_38c00(); return; - case 0x33340: + case 0x3a738: + /* Next insn is delay slot */ + r31 = 0x3a740; + pc = 0x40000; + run_40000(); + return; + case 0x3a740: r3 = r0 + 33; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x33300; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x3a700; continue; - case 0x33350: - /* Next insn is delay slot */ - r31=0x33358; - pc=0x38c00; - run_38c00(); return; - case 0x33358: - r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x33310; - continue; - case 0x33400: - pc=0x33400; + case 0x3a750: + /* Next insn is delay slot */ + r31 = 0x3a758; + pc = 0x40000; + run_40000(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3a758: + r3 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x3a710; + continue; + case 0x3a800: + pc = 0x3a800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_33400() throws ExecutionException { /* 0x33400 - 0x33600 */ + + private final void run_3a800() throws ExecutionException { /* 0x3a800 - 0x3aa00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x33400: + for (;;) { + switch (pc) { + case 0x3a800: r29 = r29 + -96; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r16; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = f24; - writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = f25; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = f22; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = f23; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f20; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f21; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = f26; - writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = f27; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = f24; + writePages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff] = f25; + writePages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff] = f22; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = f23; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = f21; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff] = f26; + writePages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff] = f27; f24 = f12; f25 = f13; f20 = f14; f21 = f15; - /* Next insn is delay slot */ - r31=0x3343c; - pc=0x34600; - run_34600(); return; - case 0x3343c: - r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x3a83c; + pc = 0x3ba00; + run_3ba00(); + return; + case 0x3a83c: + r2 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; r16 = r0 + -1; f22 = f0; f23 = f1; - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x33464; + if (r2 == r16) { + /* Next insn is delay slot */ + pc = 0x3a864; continue; } f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31=0x3345c; - pc=0x37a00; - run_37a00(); return; - case 0x3345c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3349c; + /* Next insn is delay slot */ + r31 = 0x3a85c; + pc = 0x3ee00; + run_3ee00(); + return; + case 0x3a85c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3a89c; continue; } - case 0x33464: + case 0x3a864: f0 = f22; f1 = f23; - case 0x33468: - f26 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - f24 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - f22 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r16 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - f27 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - f25 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - f23 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; + case 0x3a868: + f26 = readPages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff]; + f24 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + f22 = readPages[(r29 + 76) >>> 12][((r29 + 76) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + f27 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + f25 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + f23 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; r29 = r29 + 96; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3349c: + case 0x3a89c: f12 = f24; f13 = f25; - /* Next insn is delay slot */ - r31=0x334a8; - pc=0x37a00; - run_37a00(); return; - case 0x334a8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3356c; + /* Next insn is delay slot */ + r31 = 0x3a8a8; + pc = 0x3ee00; + run_3ee00(); + return; + case 0x3a8a8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3a96c; continue; } f0 = r0; f1 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x33464; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3a864; continue; } r2 = r0 + 1; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - f0 = readPages[(r28+-32060)>>>12][((r28+-32060)>>>2)&0x3ff]; - r2 = 7 << 16; - r2 = r2 + -336; - f1 = readPages[(r28+-32064)>>>12][((r28+-32064)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f24; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f25; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x33558; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + f0 = readPages[(r28 + -32500) >>> 12][((r28 + -32500) >>> 2) & 0x3ff]; + r2 = 6 << 16; + r2 = r2 + -28432; + f1 = readPages[(r28 + -32504) >>> 12][((r28 + -32504) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = f24; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = f25; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f21; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f0; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f1; + if (r2 == r16) { + /* Next insn is delay slot */ + pc = 0x3a958; continue; } r3 = r0 + 2; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x33558; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x3a958; continue; } - case 0x33520: + case 0x3a920: r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x3352c; - pc=0x37c00; - run_37c00(); return; - case 0x3352c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x33750; - run_33600(); return; + /* Next insn is delay slot */ + r31 = 0x3a92c; + pc = 0x3f000; + run_3f000(); + return; + case 0x3a92c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3ab50; + run_3aa00(); + return; } - case 0x33534: - r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x33558; + case 0x3a934: + r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3a958; continue; } - case 0x33544: - /* Next insn is delay slot */ - r31=0x3354c; - pc=0x38c00; - run_38c00(); return; - case 0x3354c: - r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - case 0x33558: - f0 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f1 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x33468; + case 0x3a944: + /* Next insn is delay slot */ + r31 = 0x3a94c; + pc = 0x40000; + run_40000(); + return; + case 0x3a94c: + r3 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + case 0x3a958: + f0 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + f1 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x3a868; continue; - case 0x3356c: + case 0x3a96c: f26 = r0; f27 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))==(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x335f8; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) == (Double + .longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3a9f8; continue; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))==(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x336c0; - run_33600(); return; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) == (Double + .longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3aac0; + run_3aa00(); + return; } r2 = r0 + 1; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r2 = 7 << 16; - r2 = r2 + -336; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f24; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f25; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f26; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f27; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x33520; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + r2 = 6 << 16; + r2 = r2 + -28432; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = f24; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = f25; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f21; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f26; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f27; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3a920; continue; } - f0 = readPages[(r28+-32060)>>>12][((r28+-32060)>>>2)&0x3ff]; - f1 = readPages[(r28+-32064)>>>12][((r28+-32064)>>>2)&0x3ff]; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x33558; + f0 = readPages[(r28 + -32500) >>> 12][((r28 + -32500) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32504) >>> 12][((r28 + -32504) >>> 2) & 0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f0; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f1; + /* Next insn is delay slot */ + pc = 0x3a958; continue; - case 0x335f8: + case 0x3a9f8: f12 = f22; f13 = f23; - /* Next insn is delay slot */ - r31=0x33604; - pc=0x37400; - run_37400(); return; - case 0x33600: - pc=0x33600; + /* Next insn is delay slot */ + r31 = 0x3aa04; + pc = 0x3e800; + run_3e800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3aa00: + pc = 0x3aa00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_33600() throws ExecutionException { /* 0x33600 - 0x33800 */ + + private final void run_3aa00() throws ExecutionException { /* 0x3aa00 - 0x3ac00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x33600: - case 0x33604: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x33768; + for (;;) { + switch (pc) { + case 0x3aa00: + case 0x3aa04: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3ab68; continue; } - case 0x3360c: + case 0x3aa0c: f26 = r0; f27 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))==(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x33464; - run_33400(); return; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL))) == (Double + .longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3a864; + run_3a800(); + return; } f12 = f24; f13 = f25; - /* Next insn is delay slot */ - r31=0x33638; - pc=0x37400; - run_37400(); return; - case 0x33638: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x33464; - run_33400(); return; + /* Next insn is delay slot */ + r31 = 0x3aa38; + pc = 0x3e800; + run_3e800(); + return; + case 0x3aa38: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3a864; + run_3a800(); + return; } f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31=0x3364c; - pc=0x37400; - run_37400(); return; - case 0x3364c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x33464; - run_33400(); return; + /* Next insn is delay slot */ + r31 = 0x3aa4c; + pc = 0x3e800; + run_3e800(); + return; + case 0x3aa4c: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3a864; + run_3a800(); + return; } r2 = r0 + 4; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r2 = 7 << 16; - r2 = r2 + -336; - r3 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + r2 = 6 << 16; + r2 = r2 + -28432; + r3 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; r2 = r0 + 2; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f24; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f25; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f26; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f27; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x3387c; - run_33800(); return; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = f24; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = f25; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f21; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f26; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f27; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x3ac7c; + run_3ac00(); + return; } - case 0x33694: + case 0x3aa94: r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x336a0; - pc=0x37c00; - run_37c00(); return; - case 0x336a0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3387c; - run_33800(); return; + /* Next insn is delay slot */ + r31 = 0x3aaa0; + pc = 0x3f000; + run_3f000(); + return; + case 0x3aaa0: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3ac7c; + run_3ac00(); + return; } - case 0x336a8: - r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x33558; - run_33400(); return; + case 0x3aaa8: + r2 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3a958; + run_3a800(); + return; } - /* Next insn is delay slot */ - pc=0x33544; - run_33400(); return; - case 0x336c0: + /* Next insn is delay slot */ + pc = 0x3a944; + run_3a800(); + return; + case 0x3aac0: f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31=0x336cc; - pc=0x37400; - run_37400(); return; - case 0x336cc: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x33464; - run_33400(); return; + /* Next insn is delay slot */ + r31 = 0x3aacc; + pc = 0x3e800; + run_3e800(); + return; + case 0x3aacc: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3a864; + run_3a800(); + return; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))<(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x33464; - run_33400(); return; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) < (Double + .longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3a864; + run_3a800(); + return; } r2 = r0 + 1; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r2 = 7 << 16; - r2 = r2 + -336; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f24; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f25; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3380c; - run_33800(); return; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + r2 = 6 << 16; + r2 = r2 + -28432; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = f24; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = f25; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f21; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3ac0c; + run_3ac00(); + return; } - f0 = readPages[(r28+-32052)>>>12][((r28+-32052)>>>2)&0x3ff]; + f0 = readPages[(r28 + -32492) >>> 12][((r28 + -32492) >>> 2) & 0x3ff]; r3 = r0 + 2; - f1 = readPages[(r28+-32056)>>>12][((r28+-32056)>>>2)&0x3ff]; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x337f0; + f1 = readPages[(r28 + -32496) >>> 12][((r28 + -32496) >>> 2) & 0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f0; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f1; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x3abf0; continue; } - case 0x33738: - /* Next insn is delay slot */ - r31=0x33740; - pc=0x38c00; - run_38c00(); return; - case 0x33740: + case 0x3ab38: + /* Next insn is delay slot */ + r31 = 0x3ab40; + pc = 0x40000; + run_40000(); + return; + case 0x3ab40: r3 = r0 + 33; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x336a8; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x3aaa8; continue; - case 0x33750: - /* Next insn is delay slot */ - r31=0x33758; - pc=0x38c00; - run_38c00(); return; - case 0x33758: + case 0x3ab50: + /* Next insn is delay slot */ + r31 = 0x3ab58; + pc = 0x40000; + run_40000(); + return; + case 0x3ab58: r3 = r0 + 33; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x33534; - run_33400(); return; - case 0x33768: + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x3a934; + run_3a800(); + return; + case 0x3ab68: f12 = f24; f13 = f25; - /* Next insn is delay slot */ - r31=0x33774; - pc=0x37400; - run_37400(); return; - case 0x33774: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3360c; + /* Next insn is delay slot */ + r31 = 0x3ab74; + pc = 0x3e800; + run_3e800(); + return; + case 0x3ab74: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3aa0c; continue; } f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31=0x33788; - pc=0x37400; - run_37400(); return; - case 0x33788: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3360c; + /* Next insn is delay slot */ + r31 = 0x3ab88; + pc = 0x3e800; + run_3e800(); + return; + case 0x3ab88: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3aa0c; continue; } f12 = f22; f13 = f23; - /* Next insn is delay slot */ - r31=0x3379c; - pc=0x37a00; - run_37a00(); return; - case 0x3379c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3381c; - run_33800(); return; + /* Next insn is delay slot */ + r31 = 0x3ab9c; + pc = 0x3ee00; + run_3ee00(); + return; + case 0x3ab9c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3ac1c; + run_3ac00(); + return; } r2 = r0 + 1; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r2 = 7 << 16; - r2 = r2 + -336; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f24; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f25; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3380c; - run_33800(); return; - } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))/(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + r2 = 6 << 16; + r2 = r2 + -28432; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = f24; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = f25; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f21; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3ac0c; + run_3ac00(); + return; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL))) + / (Double.longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL)))); + f27 = (int) (l >>> 32); + f26 = (int) l; + } r3 = r0 + 2; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f26; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f27; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x33738; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f26; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f27; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x3ab38; continue; } - case 0x337f0: + case 0x3abf0: r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x337fc; - pc=0x37c00; - run_37c00(); return; - case 0x337fc: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x336a8; + /* Next insn is delay slot */ + r31 = 0x3abfc; + pc = 0x3f000; + run_3f000(); + return; + case 0x3abfc: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3aaa8; continue; } - case 0x33800: - pc=0x33800; + case 0x3ac00: + pc = 0x3ac00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_33800() throws ExecutionException { /* 0x33800 - 0x33a00 */ + + private final void run_3ac00() throws ExecutionException { /* 0x3ac00 - 0x3ae00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x33800: - /* Next insn is delay slot */ - pc=0x33738; - run_33600(); return; - case 0x3380c: - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f26; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f27; - /* Next insn is delay slot */ - pc=0x337f0; - run_33600(); return; - case 0x3381c: + for (;;) { + switch (pc) { + case 0x3ac00: + /* Next insn is delay slot */ + pc = 0x3ab38; + run_3aa00(); + return; + case 0x3ac0c: + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f26; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f27; + /* Next insn is delay slot */ + pc = 0x3abf0; + run_3aa00(); + return; + case 0x3ac1c: r2 = r0 + 3; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r2 = 7 << 16; - r2 = r2 + -336; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f24; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f25; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x33894; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + r2 = 6 << 16; + r2 = r2 + -28432; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = f24; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = f25; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f21; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3ac94; continue; } - f0 = readPages[(r28+-32044)>>>12][((r28+-32044)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))<(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); - f1 = readPages[(r28+-32048)>>>12][((r28+-32048)>>>2)&0x3ff]; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x33908; + f0 = readPages[(r28 + -32484) >>> 12][((r28 + -32484) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) < (Double + .longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + f1 = readPages[(r28 + -32488) >>> 12][((r28 + -32488) >>> 2) & 0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f0; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f1; + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x3ad08; continue; } - case 0x33870: + case 0x3ac70: r3 = r0 + 2; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x33694; - run_33600(); return; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x3aa94; + run_3aa00(); + return; } - case 0x3387c: - /* Next insn is delay slot */ - r31=0x33884; - pc=0x38c00; - run_38c00(); return; - case 0x33884: - r3 = r0 + 34; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x336a8; - run_33600(); return; - case 0x33894: - f0 = readPages[(r28+-32020)>>>12][((r28+-32020)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))<(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); - f1 = readPages[(r28+-32024)>>>12][((r28+-32024)>>>2)&0x3ff]; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x33870; - continue; - } - f0 = readPages[(r28+-32036)>>>12][((r28+-32036)>>>2)&0x3ff]; - f1 = readPages[(r28+-32040)>>>12][((r28+-32040)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - f12 = f20; - f13 = f21; - /* Next insn is delay slot */ - r31=0x338d4; - pc=0x38000; - run_38000(); return; - case 0x338d4: - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x338fc; - continue; - } - f0 = readPages[(r28+-32052)>>>12][((r28+-32052)>>>2)&0x3ff]; - f1 = readPages[(r28+-32056)>>>12][((r28+-32056)>>>2)&0x3ff]; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; - case 0x338fc: - r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x33870; - continue; - case 0x33908: - f0 = readPages[(r28+-32036)>>>12][((r28+-32036)>>>2)&0x3ff]; - f1 = readPages[(r28+-32040)>>>12][((r28+-32040)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - f12 = f20; - f13 = f21; - /* Next insn is delay slot */ - r31=0x33928; - pc=0x38000; - run_38000(); return; - case 0x33928: - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x338fc; - continue; - } - f0 = readPages[(r28+-32028)>>>12][((r28+-32028)>>>2)&0x3ff]; - r2 = readPages[(r28+-31120)>>>12][((r28+-31120)>>>2)&0x3ff]; - f1 = readPages[(r28+-32032)>>>12][((r28+-32032)>>>2)&0x3ff]; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x33870; - continue; - case 0x33a00: - pc=0x33a00; + case 0x3ac7c: + /* Next insn is delay slot */ + r31 = 0x3ac84; + pc = 0x40000; + run_40000(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3ac84: + r3 = r0 + 34; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x3aaa8; + run_3aa00(); + return; + case 0x3ac94: + f0 = readPages[(r28 + -32460) >>> 12][((r28 + -32460) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) < (Double + .longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + f1 = readPages[(r28 + -32464) >>> 12][((r28 + -32464) >>> 2) & 0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f0; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f1; + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3ac70; + continue; + } + f0 = readPages[(r28 + -32476) >>> 12][((r28 + -32476) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32480) >>> 12][((r28 + -32480) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + f12 = f20; + f13 = f21; + /* Next insn is delay slot */ + r31 = 0x3acd4; + pc = 0x3f400; + run_3f400(); + return; + case 0x3acd4: + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) == (Double + .longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x3acfc; + continue; + } + f0 = readPages[(r28 + -32492) >>> 12][((r28 + -32492) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32496) >>> 12][((r28 + -32496) >>> 2) & 0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f0; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f1; + case 0x3acfc: + r2 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x3ac70; + continue; + case 0x3ad08: + f0 = readPages[(r28 + -32476) >>> 12][((r28 + -32476) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32480) >>> 12][((r28 + -32480) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + f12 = f20; + f13 = f21; + /* Next insn is delay slot */ + r31 = 0x3ad28; + pc = 0x3f400; + run_3f400(); + return; + case 0x3ad28: + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) == (Double + .longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x3acfc; + continue; + } + f0 = readPages[(r28 + -32468) >>> 12][((r28 + -32468) >>> 2) & 0x3ff]; + r2 = readPages[(r28 + -31560) >>> 12][((r28 + -31560) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32472) >>> 12][((r28 + -32472) >>> 2) & 0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f0; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f1; + /* Next insn is delay slot */ + pc = 0x3ac70; + continue; + case 0x3ae00: + pc = 0x3ae00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_33a00() throws ExecutionException { /* 0x33a00 - 0x33c00 */ + + private final void run_3ae00() throws ExecutionException { /* 0x3ae00 - 0x3b000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x33a00: + for (;;) { + switch (pc) { + case 0x3ae00: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; @@ -37951,681 +37183,1480 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = 16368 << 16; r29 = r29 + -48; r4 = r2 < r3 ? 1 : 0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f24; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f25; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f22; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f23; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f20; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f21; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x33a94; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f24; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f25; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f22; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f23; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = f21; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x3ae94; continue; } r5 = f12; r2 = r2 - r3; r2 = r2 | r5; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x33c24; - run_33c00(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3b024; + run_3b000(); + return; } - if(r6 <= 0) { - /* Next insn is delay slot */ - pc=0x33d6c; - run_33c00(); return; + if (r6 <= 0) { + /* Next insn is delay slot */ + pc = 0x3b16c; + run_3b000(); + return; } f0 = r0; f1 = r0; - case 0x33a6c: - f24 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f22 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f25 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - f23 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + case 0x3ae6c: + f24 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + f22 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f25 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + f23 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x33a94: + case 0x3ae94: r3 = 16352 << 16; r3 = r2 < r3 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x33be0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x3afe0; continue; } - if(r6 < 0) { - /* Next insn is delay slot */ - pc=0x33d80; - run_33c00(); return; + if (r6 < 0) { + /* Next insn is delay slot */ + pc = 0x3b180; + run_3b000(); + return; } - f22 = readPages[(r28+-31916)>>>12][((r28+-31916)>>>2)&0x3ff]; - f0 = readPages[(r28+-31900)>>>12][((r28+-31900)>>>2)&0x3ff]; - f23 = readPages[(r28+-31920)>>>12][((r28+-31920)>>>2)&0x3ff]; - f1 = readPages[(r28+-31904)>>>12][((r28+-31904)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } + f22 = readPages[(r28 + -32356) >>> 12][((r28 + -32356) >>> 2) & 0x3ff]; + f0 = readPages[(r28 + -32340) >>> 12][((r28 + -32340) >>> 2) & 0x3ff]; + f23 = readPages[(r28 + -32360) >>> 12][((r28 + -32360) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32344) >>> 12][((r28 + -32344) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31=0x33ad0; - pc=0x35800; - run_35800(); return; - case 0x33ad0: - f12 = readPages[(r28+-31996)>>>12][((r28+-31996)>>>2)&0x3ff]; - f4 = readPages[(r28+-31988)>>>12][((r28+-31988)>>>2)&0x3ff]; - f13 = readPages[(r28+-32000)>>>12][((r28+-32000)>>>2)&0x3ff]; - f5 = readPages[(r28+-31992)>>>12][((r28+-31992)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f6 = readPages[(r28+-31940)>>>12][((r28+-31940)>>>2)&0x3ff]; - r3 = r0 + r0; - f7 = readPages[(r28+-31944)>>>12][((r28+-31944)>>>2)&0x3ff]; - r2 = f1; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f4 = readPages[(r28+-31980)>>>12][((r28+-31980)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f5 = readPages[(r28+-31984)>>>12][((r28+-31984)>>>2)&0x3ff]; - f2 = r3; - f24 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f3 = r2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f4 = readPages[(r28+-31972)>>>12][((r28+-31972)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f5 = readPages[(r28+-31976)>>>12][((r28+-31976)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f25 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f4 = readPages[(r28+-31964)>>>12][((r28+-31964)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f5 = readPages[(r28+-31968)>>>12][((r28+-31968)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f4 = readPages[(r28+-31956)>>>12][((r28+-31956)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f5 = readPages[(r28+-31960)>>>12][((r28+-31960)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f4 = readPages[(r28+-31948)>>>12][((r28+-31948)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f5 = readPages[(r28+-31952)>>>12][((r28+-31952)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f6 = readPages[(r28+-31932)>>>12][((r28+-31932)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f7 = readPages[(r28+-31936)>>>12][((r28+-31936)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f6 = readPages[(r28+-31924)>>>12][((r28+-31924)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f7 = readPages[(r28+-31928)>>>12][((r28+-31928)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))/(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f22 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f23 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x3aed0; + pc = 0x3cc00; + run_3cc00(); return; - case 0x33be0: + case 0x3aed0: + f12 = readPages[(r28 + -32436) >>> 12][((r28 + -32436) >>> 2) & 0x3ff]; + f4 = readPages[(r28 + -32428) >>> 12][((r28 + -32428) >>> 2) & 0x3ff]; + f13 = readPages[(r28 + -32440) >>> 12][((r28 + -32440) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -32432) >>> 12][((r28 + -32432) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f6 = readPages[(r28 + -32380) >>> 12][((r28 + -32380) >>> 2) & 0x3ff]; + r3 = r0 + r0; + f7 = readPages[(r28 + -32384) >>> 12][((r28 + -32384) >>> 2) & 0x3ff]; + r2 = f1; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f4 = readPages[(r28 + -32420) >>> 12][((r28 + -32420) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f5 = readPages[(r28 + -32424) >>> 12][((r28 + -32424) >>> 2) & 0x3ff]; + f2 = r3; + f24 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + f3 = r2; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f4 = readPages[(r28 + -32412) >>> 12][((r28 + -32412) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f5 = readPages[(r28 + -32416) >>> 12][((r28 + -32416) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f25 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f4 = readPages[(r28 + -32404) >>> 12][((r28 + -32404) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f5 = readPages[(r28 + -32408) >>> 12][((r28 + -32408) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f4 = readPages[(r28 + -32396) >>> 12][((r28 + -32396) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f5 = readPages[(r28 + -32400) >>> 12][((r28 + -32400) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f4 = readPages[(r28 + -32388) >>> 12][((r28 + -32388) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f5 = readPages[(r28 + -32392) >>> 12][((r28 + -32392) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f6 = readPages[(r28 + -32372) >>> 12][((r28 + -32372) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f7 = readPages[(r28 + -32376) >>> 12][((r28 + -32376) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f6 = readPages[(r28 + -32364) >>> 12][((r28 + -32364) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f7 = readPages[(r28 + -32368) >>> 12][((r28 + -32368) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f23 = (int) (l >>> 32); + f22 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + / (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f23 = (int) (l >>> 32); + f22 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f23 = (int) (l >>> 32); + f22 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f20 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f22 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f23 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x3afe0: r3 = 15456 << 16; r3 = r3 + 1; r2 = r2 < r3 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x33c54; - run_33c00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3b054; + run_3b000(); + return; } - f24 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f22 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - case 0x33c00: - pc=0x33c00; + f24 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + f22 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + case 0x3b000: + pc = 0x3b000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_33c00() throws ExecutionException { /* 0x33c00 - 0x33e00 */ + + private final void run_3b000() throws ExecutionException { /* 0x3b000 - 0x3b200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x33c00: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f0 = readPages[(r28+-32004)>>>12][((r28+-32004)>>>2)&0x3ff]; - f25 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - f23 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f1 = readPages[(r28+-32008)>>>12][((r28+-32008)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x3b000: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f0 = readPages[(r28 + -32444) >>> 12][((r28 + -32444) >>> 2) & 0x3ff]; + f25 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + f23 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32448) >>> 12][((r28 + -32448) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x33c24: - f24 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f22 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f25 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - f23 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))/(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + case 0x3b024: + f24 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + f22 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f25 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + f23 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + / (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x33c54: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f0 = readPages[(r28+-31996)>>>12][((r28+-31996)>>>2)&0x3ff]; - f4 = readPages[(r28+-31988)>>>12][((r28+-31988)>>>2)&0x3ff]; - f1 = readPages[(r28+-32000)>>>12][((r28+-32000)>>>2)&0x3ff]; - f5 = readPages[(r28+-31992)>>>12][((r28+-31992)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f6 = readPages[(r28+-31940)>>>12][((r28+-31940)>>>2)&0x3ff]; - f24 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f7 = readPages[(r28+-31944)>>>12][((r28+-31944)>>>2)&0x3ff]; - f22 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f4 = readPages[(r28+-31980)>>>12][((r28+-31980)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f5 = readPages[(r28+-31984)>>>12][((r28+-31984)>>>2)&0x3ff]; - f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f25 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f4 = readPages[(r28+-31972)>>>12][((r28+-31972)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f5 = readPages[(r28+-31976)>>>12][((r28+-31976)>>>2)&0x3ff]; - f23 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f4 = readPages[(r28+-31964)>>>12][((r28+-31964)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f5 = readPages[(r28+-31968)>>>12][((r28+-31968)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f4 = readPages[(r28+-31956)>>>12][((r28+-31956)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f5 = readPages[(r28+-31960)>>>12][((r28+-31960)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f4 = readPages[(r28+-31948)>>>12][((r28+-31948)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f5 = readPages[(r28+-31952)>>>12][((r28+-31952)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f6 = readPages[(r28+-31932)>>>12][((r28+-31932)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f7 = readPages[(r28+-31936)>>>12][((r28+-31936)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f6 = readPages[(r28+-31924)>>>12][((r28+-31924)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f7 = readPages[(r28+-31928)>>>12][((r28+-31928)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-31916)>>>12][((r28+-31916)>>>2)&0x3ff]; - f5 = readPages[(r28+-31920)>>>12][((r28+-31920)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f2 = readPages[(r28+-31908)>>>12][((r28+-31908)>>>2)&0x3ff]; - f3 = readPages[(r28+-31912)>>>12][((r28+-31912)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f0 = readPages[(r28+-32004)>>>12][((r28+-32004)>>>2)&0x3ff]; - f1 = readPages[(r28+-32008)>>>12][((r28+-32008)>>>2)&0x3ff]; - r29 = r29 + 48; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=r31; + case 0x3b054: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f0 = readPages[(r28 + -32436) >>> 12][((r28 + -32436) >>> 2) & 0x3ff]; + f4 = readPages[(r28 + -32428) >>> 12][((r28 + -32428) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32440) >>> 12][((r28 + -32440) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -32432) >>> 12][((r28 + -32432) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f6 = readPages[(r28 + -32380) >>> 12][((r28 + -32380) >>> 2) & 0x3ff]; + f24 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + f7 = readPages[(r28 + -32384) >>> 12][((r28 + -32384) >>> 2) & 0x3ff]; + f22 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f4 = readPages[(r28 + -32420) >>> 12][((r28 + -32420) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f5 = readPages[(r28 + -32424) >>> 12][((r28 + -32424) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f25 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f4 = readPages[(r28 + -32412) >>> 12][((r28 + -32412) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f5 = readPages[(r28 + -32416) >>> 12][((r28 + -32416) >>> 2) & 0x3ff]; + f23 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f4 = readPages[(r28 + -32404) >>> 12][((r28 + -32404) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f5 = readPages[(r28 + -32408) >>> 12][((r28 + -32408) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f4 = readPages[(r28 + -32396) >>> 12][((r28 + -32396) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f5 = readPages[(r28 + -32400) >>> 12][((r28 + -32400) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f4 = readPages[(r28 + -32388) >>> 12][((r28 + -32388) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f5 = readPages[(r28 + -32392) >>> 12][((r28 + -32392) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f6 = readPages[(r28 + -32372) >>> 12][((r28 + -32372) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f7 = readPages[(r28 + -32376) >>> 12][((r28 + -32376) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f6 = readPages[(r28 + -32364) >>> 12][((r28 + -32364) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f7 = readPages[(r28 + -32368) >>> 12][((r28 + -32368) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -32356) >>> 12][((r28 + -32356) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -32360) >>> 12][((r28 + -32360) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + / (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f2 = readPages[(r28 + -32348) >>> 12][((r28 + -32348) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32352) >>> 12][((r28 + -32352) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f0 = readPages[(r28 + -32444) >>> 12][((r28 + -32444) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32448) >>> 12][((r28 + -32448) >>> 2) & 0x3ff]; + r29 = r29 + 48; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = r31; return; - case 0x33d6c: - f0 = readPages[(r28+-32012)>>>12][((r28+-32012)>>>2)&0x3ff]; - f1 = readPages[(r28+-32016)>>>12][((r28+-32016)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x33a6c; - run_33a00(); return; - case 0x33d80: - f24 = readPages[(r28+-31916)>>>12][((r28+-31916)>>>2)&0x3ff]; - f0 = readPages[(r28+-31900)>>>12][((r28+-31900)>>>2)&0x3ff]; - f25 = readPages[(r28+-31920)>>>12][((r28+-31920)>>>2)&0x3ff]; - f1 = readPages[(r28+-31904)>>>12][((r28+-31904)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f20 = readPages[(r28+-31996)>>>12][((r28+-31996)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } - f21 = readPages[(r28+-32000)>>>12][((r28+-32000)>>>2)&0x3ff]; - f0 = readPages[(r28+-31988)>>>12][((r28+-31988)>>>2)&0x3ff]; - f2 = readPages[(r28+-31964)>>>12][((r28+-31964)>>>2)&0x3ff]; - f1 = readPages[(r28+-31992)>>>12][((r28+-31992)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - f3 = readPages[(r28+-31968)>>>12][((r28+-31968)>>>2)&0x3ff]; + case 0x3b16c: + f0 = readPages[(r28 + -32452) >>> 12][((r28 + -32452) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32456) >>> 12][((r28 + -32456) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x3ae6c; + run_3ae00(); + return; + case 0x3b180: + f24 = readPages[(r28 + -32356) >>> 12][((r28 + -32356) >>> 2) & 0x3ff]; + f0 = readPages[(r28 + -32340) >>> 12][((r28 + -32340) >>> 2) & 0x3ff]; + f25 = readPages[(r28 + -32360) >>> 12][((r28 + -32360) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32344) >>> 12][((r28 + -32344) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f20 = readPages[(r28 + -32436) >>> 12][((r28 + -32436) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f23 = (int) (l >>> 32); + f22 = (int) l; + } + f21 = readPages[(r28 + -32440) >>> 12][((r28 + -32440) >>> 2) & 0x3ff]; + f0 = readPages[(r28 + -32428) >>> 12][((r28 + -32428) >>> 2) & 0x3ff]; + f2 = readPages[(r28 + -32404) >>> 12][((r28 + -32404) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32432) >>> 12][((r28 + -32432) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + f3 = readPages[(r28 + -32408) >>> 12][((r28 + -32408) >>> 2) & 0x3ff]; f12 = f22; - f13 = f23; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - f0 = readPages[(r28+-31980)>>>12][((r28+-31980)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - f1 = readPages[(r28+-31984)>>>12][((r28+-31984)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - f0 = readPages[(r28+-31972)>>>12][((r28+-31972)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - f1 = readPages[(r28+-31976)>>>12][((r28+-31976)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - f2 = readPages[(r28+-31956)>>>12][((r28+-31956)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - f3 = readPages[(r28+-31960)>>>12][((r28+-31960)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - case 0x33e00: - pc=0x33e00; + f13 = f23; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + f0 = readPages[(r28 + -32420) >>> 12][((r28 + -32420) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + f1 = readPages[(r28 + -32424) >>> 12][((r28 + -32424) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + f0 = readPages[(r28 + -32412) >>> 12][((r28 + -32412) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + f1 = readPages[(r28 + -32416) >>> 12][((r28 + -32416) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + f2 = readPages[(r28 + -32396) >>> 12][((r28 + -32396) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + f3 = readPages[(r28 + -32400) >>> 12][((r28 + -32400) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + case 0x3b200: + pc = 0x3b200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_33e00() throws ExecutionException { /* 0x33e00 - 0x34000 */ + + private final void run_3b200() throws ExecutionException { /* 0x3b200 - 0x3b400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x33e00: - /* Next insn is delay slot */ - r31=0x33e08; - pc=0x35800; - run_35800(); return; - case 0x33e08: - f12 = readPages[(r28+-31948)>>>12][((r28+-31948)>>>2)&0x3ff]; - f2 = readPages[(r28+-31940)>>>12][((r28+-31940)>>>2)&0x3ff]; - f13 = readPages[(r28+-31952)>>>12][((r28+-31952)>>>2)&0x3ff]; - f3 = readPages[(r28+-31944)>>>12][((r28+-31944)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f2 = readPages[(r28+-31932)>>>12][((r28+-31932)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f3 = readPages[(r28+-31936)>>>12][((r28+-31936)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f2 = readPages[(r28+-31924)>>>12][((r28+-31924)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f3 = readPages[(r28+-31928)>>>12][((r28+-31928)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f2 = readPages[(r28+-31908)>>>12][((r28+-31908)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } - f3 = readPages[(r28+-31912)>>>12][((r28+-31912)>>>2)&0x3ff]; - f12 = readPages[(r28+-32012)>>>12][((r28+-32012)>>>2)&0x3ff]; - f13 = readPages[(r28+-32016)>>>12][((r28+-32016)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))+(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))/(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x33a6c; - run_33a00(); return; - case 0x34000: - pc=0x34000; + for (;;) { + switch (pc) { + case 0x3b200: + /* Next insn is delay slot */ + r31 = 0x3b208; + pc = 0x3cc00; + run_3cc00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3b208: + f12 = readPages[(r28 + -32388) >>> 12][((r28 + -32388) >>> 2) & 0x3ff]; + f2 = readPages[(r28 + -32380) >>> 12][((r28 + -32380) >>> 2) & 0x3ff]; + f13 = readPages[(r28 + -32392) >>> 12][((r28 + -32392) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32384) >>> 12][((r28 + -32384) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL))) + * (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f2 = readPages[(r28 + -32372) >>> 12][((r28 + -32372) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f3 = readPages[(r28 + -32376) >>> 12][((r28 + -32376) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f2 = readPages[(r28 + -32364) >>> 12][((r28 + -32364) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f3 = readPages[(r28 + -32368) >>> 12][((r28 + -32368) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f2 = readPages[(r28 + -32348) >>> 12][((r28 + -32348) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f23 = (int) (l >>> 32); + f22 = (int) l; + } + f3 = readPages[(r28 + -32352) >>> 12][((r28 + -32352) >>> 2) & 0x3ff]; + f12 = readPages[(r28 + -32452) >>> 12][((r28 + -32452) >>> 2) & 0x3ff]; + f13 = readPages[(r28 + -32456) >>> 12][((r28 + -32456) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL))) + + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL)))); + f25 = (int) (l >>> 32); + f24 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + / (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3ae6c; + run_3ae00(); + return; + case 0x3b400: + pc = 0x3b400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_34000() throws ExecutionException { /* 0x34000 - 0x34200 */ + + private final void run_3b400() throws ExecutionException { /* 0x3b400 - 0x3b600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x34000: + for (;;) { + switch (pc) { + case 0x3b400: r29 = r29 + -56; r2 = f13; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; r16 = 32767 << 16; r16 = r16 | 65535; r16 = r16 & r2; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; r17 = r2 + r0; r2 = 16368 << 16; r3 = r16 < r2 ? 1 : 0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f24; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f25; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f22; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f23; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f21; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x340a8; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = f24; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = f25; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f22; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f23; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f21; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x3b4a8; continue; } r5 = f12; r2 = r16 - r2; r2 = r2 | r5; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x340fc; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3b4fc; continue; - } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))/(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + / (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r3 = f2; r2 = f3; - case 0x34070: - f24 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - f22 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + case 0x3b470: + f24 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + f22 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; f0 = r3; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f25 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - f23 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - f21 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f25 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + f23 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; f1 = r2; r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x340a8: + case 0x3b4a8: r2 = 16352 << 16; r2 = r16 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x34138; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3b538; continue; } r2 = 15936 << 16; r2 = r16 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x342e8; - run_34200(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3b6e8; + run_3b600(); + return; } - f0 = readPages[(r28+-31876)>>>12][((r28+-31876)>>>2)&0x3ff]; - f22 = readPages[(r28+-31868)>>>12][((r28+-31868)>>>2)&0x3ff]; - f1 = readPages[(r28+-31880)>>>12][((r28+-31880)>>>2)&0x3ff]; - f23 = readPages[(r28+-31872)>>>12][((r28+-31872)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x34144; + f0 = readPages[(r28 + -32316) >>> 12][((r28 + -32316) >>> 2) & 0x3ff]; + f22 = readPages[(r28 + -32308) >>> 12][((r28 + -32308) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32320) >>> 12][((r28 + -32320) >>> 2) & 0x3ff]; + f23 = readPages[(r28 + -32312) >>> 12][((r28 + -32312) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL))) < (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3b544; continue; } r3 = f12; r2 = f13; - /* Next insn is delay slot */ - pc=0x34070; + /* Next insn is delay slot */ + pc = 0x3b470; continue; - case 0x340fc: - f0 = readPages[(r28+-31892)>>>12][((r28+-31892)>>>2)&0x3ff]; - f1 = readPages[(r28+-31896)>>>12][((r28+-31896)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f0 = readPages[(r28+-31884)>>>12][((r28+-31884)>>>2)&0x3ff]; - f1 = readPages[(r28+-31888)>>>12][((r28+-31888)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + case 0x3b4fc: + f0 = readPages[(r28 + -32332) >>> 12][((r28 + -32332) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32336) >>> 12][((r28 + -32336) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f0 = readPages[(r28 + -32324) >>> 12][((r28 + -32324) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32328) >>> 12][((r28 + -32328) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r3 = f0; r2 = f1; - /* Next insn is delay slot */ - pc=0x34070; + /* Next insn is delay slot */ + pc = 0x3b470; continue; - case 0x34138: - f22 = readPages[(r28+-31868)>>>12][((r28+-31868)>>>2)&0x3ff]; - f23 = readPages[(r28+-31872)>>>12][((r28+-31872)>>>2)&0x3ff]; - case 0x34144: - /* Next insn is delay slot */ - r31=0x3414c; - pc=0x32a00; - run_32a00(); return; - case 0x3414c: - f2 = readPages[(r28+-31780)>>>12][((r28+-31780)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f3 = readPages[(r28+-31784)>>>12][((r28+-31784)>>>2)&0x3ff]; - f24 = readPages[(r28+-31860)>>>12][((r28+-31860)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - f25 = readPages[(r28+-31864)>>>12][((r28+-31864)>>>2)&0x3ff]; - f0 = readPages[(r28+-31852)>>>12][((r28+-31852)>>>2)&0x3ff]; - f2 = readPages[(r28+-31828)>>>12][((r28+-31828)>>>2)&0x3ff]; - f1 = readPages[(r28+-31856)>>>12][((r28+-31856)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } - f3 = readPages[(r28+-31832)>>>12][((r28+-31832)>>>2)&0x3ff]; - f4 = readPages[(r28+-31820)>>>12][((r28+-31820)>>>2)&0x3ff]; + case 0x3b538: + f22 = readPages[(r28 + -32308) >>> 12][((r28 + -32308) >>> 2) & 0x3ff]; + f23 = readPages[(r28 + -32312) >>> 12][((r28 + -32312) >>> 2) & 0x3ff]; + case 0x3b544: + /* Next insn is delay slot */ + r31 = 0x3b54c; + pc = 0x39e00; + run_39e00(); + return; + case 0x3b54c: + f2 = readPages[(r28 + -32220) >>> 12][((r28 + -32220) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f3 = readPages[(r28 + -32224) >>> 12][((r28 + -32224) >>> 2) & 0x3ff]; + f24 = readPages[(r28 + -32300) >>> 12][((r28 + -32300) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + f25 = readPages[(r28 + -32304) >>> 12][((r28 + -32304) >>> 2) & 0x3ff]; + f0 = readPages[(r28 + -32292) >>> 12][((r28 + -32292) >>> 2) & 0x3ff]; + f2 = readPages[(r28 + -32268) >>> 12][((r28 + -32268) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32296) >>> 12][((r28 + -32296) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL)))); + f25 = (int) (l >>> 32); + f24 = (int) l; + } + f3 = readPages[(r28 + -32272) >>> 12][((r28 + -32272) >>> 2) & 0x3ff]; + f4 = readPages[(r28 + -32260) >>> 12][((r28 + -32260) >>> 2) & 0x3ff]; f12 = f20; f13 = f21; - f5 = readPages[(r28+-31824)>>>12][((r28+-31824)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } - f0 = readPages[(r28+-31844)>>>12][((r28+-31844)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } - f1 = readPages[(r28+-31848)>>>12][((r28+-31848)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } - f0 = readPages[(r28+-31836)>>>12][((r28+-31836)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } - f1 = readPages[(r28+-31840)>>>12][((r28+-31840)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } - f0 = readPages[(r28+-31812)>>>12][((r28+-31812)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } - f1 = readPages[(r28+-31816)>>>12][((r28+-31816)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } - f2 = readPages[(r28+-31804)>>>12][((r28+-31804)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } - f3 = readPages[(r28+-31808)>>>12][((r28+-31808)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f2 = readPages[(r28+-31796)>>>12][((r28+-31796)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f3 = readPages[(r28+-31800)>>>12][((r28+-31800)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f25 = (int)(l >>> 32); f24 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f2 = readPages[(r28+-31788)>>>12][((r28+-31788)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f3 = readPages[(r28+-31792)>>>12][((r28+-31792)>>>2)&0x3ff]; - case 0x34200: - pc=0x34200; + f5 = readPages[(r28 + -32264) >>> 12][((r28 + -32264) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f25 = (int) (l >>> 32); + f24 = (int) l; + } + f0 = readPages[(r28 + -32284) >>> 12][((r28 + -32284) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f25 = (int) (l >>> 32); + f24 = (int) l; + } + f1 = readPages[(r28 + -32288) >>> 12][((r28 + -32288) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f25 = (int) (l >>> 32); + f24 = (int) l; + } + f0 = readPages[(r28 + -32276) >>> 12][((r28 + -32276) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f25 = (int) (l >>> 32); + f24 = (int) l; + } + f1 = readPages[(r28 + -32280) >>> 12][((r28 + -32280) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f25 = (int) (l >>> 32); + f24 = (int) l; + } + f0 = readPages[(r28 + -32252) >>> 12][((r28 + -32252) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f25 = (int) (l >>> 32); + f24 = (int) l; + } + f1 = readPages[(r28 + -32256) >>> 12][((r28 + -32256) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f25 = (int) (l >>> 32); + f24 = (int) l; + } + f2 = readPages[(r28 + -32244) >>> 12][((r28 + -32244) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f25 = (int) (l >>> 32); + f24 = (int) l; + } + f3 = readPages[(r28 + -32248) >>> 12][((r28 + -32248) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f2 = readPages[(r28 + -32236) >>> 12][((r28 + -32236) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f3 = readPages[(r28 + -32240) >>> 12][((r28 + -32240) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f25 = (int) (l >>> 32); + f24 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f25 = (int) (l >>> 32); + f24 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f2 = readPages[(r28 + -32228) >>> 12][((r28 + -32228) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f3 = readPages[(r28 + -32232) >>> 12][((r28 + -32232) >>> 2) & 0x3ff]; + case 0x3b600: + pc = 0x3b600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_34200() throws ExecutionException { /* 0x34200 - 0x34400 */ + + private final void run_3b600() throws ExecutionException { /* 0x3b600 - 0x3b800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x34200: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } - /* Next insn is delay slot */ - r31=0x34218; - pc=0x35800; - run_35800(); return; - case 0x34218: + for (;;) { + switch (pc) { + case 0x3b600: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f23 = (int) (l >>> 32); + f22 = (int) l; + } + /* Next insn is delay slot */ + r31 = 0x3b618; + pc = 0x3cc00; + run_3cc00(); + return; + case 0x3b618: r2 = 16367 << 16; r2 = r2 + 13107; r16 = r16 < r2 ? 1 : 0; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x34274; + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x3b674; continue; - } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))/(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } - f4 = readPages[(r28+-31884)>>>12][((r28+-31884)>>>2)&0x3ff]; - f2 = readPages[(r28+-31892)>>>12][((r28+-31892)>>>2)&0x3ff]; - f5 = readPages[(r28+-31888)>>>12][((r28+-31888)>>>2)&0x3ff]; - f3 = readPages[(r28+-31896)>>>12][((r28+-31896)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) + / (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f23 = (int) (l >>> 32); + f22 = (int) l; + } + f4 = readPages[(r28 + -32324) >>> 12][((r28 + -32324) >>> 2) & 0x3ff]; + f2 = readPages[(r28 + -32332) >>> 12][((r28 + -32332) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -32328) >>> 12][((r28 + -32328) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32336) >>> 12][((r28 + -32336) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f23 = (int) (l >>> 32); + f22 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } r5 = f4; r4 = f5; - case 0x3425c: - if(r17 <= 0) { - /* Next insn is delay slot */ - pc=0x343f0; + case 0x3b65c: + if (r17 <= 0) { + /* Next insn is delay slot */ + pc = 0x3b7f0; continue; } r3 = r5 + r0; r2 = r4 + r0; - /* Next insn is delay slot */ - pc=0x34070; - run_34000(); return; - case 0x34274: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))/(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } + /* Next insn is delay slot */ + pc = 0x3b470; + run_3b400(); + return; + case 0x3b674: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL))) + / (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f23 = (int) (l >>> 32); + f22 = (int) l; + } r3 = r0 + r0; r2 = f1; - f2 = r3; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f3 = r2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f23 = (int)(l >>> 32); f22 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - f22 = readPages[(r28+-31884)>>>12][((r28+-31884)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - f23 = readPages[(r28+-31888)>>>12][((r28+-31888)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))+(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))-(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f21 = (int)(l >>> 32); f20 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f4 = readPages[(r28+-31772)>>>12][((r28+-31772)>>>2)&0x3ff]; - f5 = readPages[(r28+-31776)>>>12][((r28+-31776)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + f2 = r3; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f3 = r2; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f23 = (int) (l >>> 32); + f22 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + - (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + f22 = readPages[(r28 + -32324) >>> 12][((r28 + -32324) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } + f23 = readPages[(r28 + -32328) >>> 12][((r28 + -32328) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL))) + - (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f21 = (int) (l >>> 32); + f20 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f4 = readPages[(r28 + -32212) >>> 12][((r28 + -32212) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -32216) >>> 12][((r28 + -32216) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r5 = f2; r4 = f3; - /* Next insn is delay slot */ - pc=0x3425c; + /* Next insn is delay slot */ + pc = 0x3b65c; continue; - case 0x342e8: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f2 = readPages[(r28+-31860)>>>12][((r28+-31860)>>>2)&0x3ff]; - f3 = readPages[(r28+-31864)>>>12][((r28+-31864)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f2 = readPages[(r28+-31852)>>>12][((r28+-31852)>>>2)&0x3ff]; - f3 = readPages[(r28+-31856)>>>12][((r28+-31856)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f2 = readPages[(r28+-31844)>>>12][((r28+-31844)>>>2)&0x3ff]; - f3 = readPages[(r28+-31848)>>>12][((r28+-31848)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f2 = readPages[(r28+-31836)>>>12][((r28+-31836)>>>2)&0x3ff]; - f3 = readPages[(r28+-31840)>>>12][((r28+-31840)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f2 = readPages[(r28+-31828)>>>12][((r28+-31828)>>>2)&0x3ff]; - f3 = readPages[(r28+-31832)>>>12][((r28+-31832)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f2 = readPages[(r28+-31820)>>>12][((r28+-31820)>>>2)&0x3ff]; - f3 = readPages[(r28+-31824)>>>12][((r28+-31824)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-31804)>>>12][((r28+-31804)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f2 = readPages[(r28+-31812)>>>12][((r28+-31812)>>>2)&0x3ff]; - f5 = readPages[(r28+-31808)>>>12][((r28+-31808)>>>2)&0x3ff]; - f3 = readPages[(r28+-31816)>>>12][((r28+-31816)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-31796)>>>12][((r28+-31796)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f5 = readPages[(r28+-31800)>>>12][((r28+-31800)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-31788)>>>12][((r28+-31788)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f5 = readPages[(r28+-31792)>>>12][((r28+-31792)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f2 = readPages[(r28+-31868)>>>12][((r28+-31868)>>>2)&0x3ff]; - f3 = readPages[(r28+-31872)>>>12][((r28+-31872)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + case 0x3b6e8: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f2 = readPages[(r28 + -32300) >>> 12][((r28 + -32300) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32304) >>> 12][((r28 + -32304) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f2 = readPages[(r28 + -32292) >>> 12][((r28 + -32292) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32296) >>> 12][((r28 + -32296) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f2 = readPages[(r28 + -32284) >>> 12][((r28 + -32284) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32288) >>> 12][((r28 + -32288) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f2 = readPages[(r28 + -32276) >>> 12][((r28 + -32276) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32280) >>> 12][((r28 + -32280) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f2 = readPages[(r28 + -32268) >>> 12][((r28 + -32268) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32272) >>> 12][((r28 + -32272) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f2 = readPages[(r28 + -32260) >>> 12][((r28 + -32260) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32264) >>> 12][((r28 + -32264) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -32244) >>> 12][((r28 + -32244) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f2 = readPages[(r28 + -32252) >>> 12][((r28 + -32252) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -32248) >>> 12][((r28 + -32248) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32256) >>> 12][((r28 + -32256) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -32236) >>> 12][((r28 + -32236) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f5 = readPages[(r28 + -32240) >>> 12][((r28 + -32240) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -32228) >>> 12][((r28 + -32228) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f5 = readPages[(r28 + -32232) >>> 12][((r28 + -32232) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f2 = readPages[(r28 + -32308) >>> 12][((r28 + -32308) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32312) >>> 12][((r28 + -32312) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } r3 = f4; r2 = f5; - /* Next insn is delay slot */ - pc=0x34070; - run_34000(); return; - case 0x343f0: + /* Next insn is delay slot */ + pc = 0x3b470; + run_3b400(); + return; + case 0x3b7f0: r6 = 32768 << 16; r2 = r4 ^ r6; r3 = r5 + r0; - /* Next insn is delay slot */ - pc=0x34070; - run_34000(); return; - case 0x34400: - pc=0x34400; + /* Next insn is delay slot */ + pc = 0x3b470; + run_3b400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3b800: + pc = 0x3b800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_34400() throws ExecutionException { /* 0x34400 - 0x34600 */ + + private final void run_3b800() throws ExecutionException { /* 0x3b800 - 0x3ba00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x34400: - case 0x34600: - pc=0x34600; + for (;;) { + switch (pc) { + case 0x3b800: + case 0x3ba00: + pc = 0x3ba00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_34600() throws ExecutionException { /* 0x34600 - 0x34800 */ + + private final void run_3ba00() throws ExecutionException { /* 0x3ba00 - 0x3bc00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x34600: + for (;;) { + switch (pc) { + case 0x3ba00: r2 = f15; r4 = 32767 << 16; r29 = r29 + -72; r3 = f14; r4 = r4 | 65535; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r21; r21 = r4 & r2; r5 = r21 | r3; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f20; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f21; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r23; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = f21; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; f20 = f12; f21 = f13; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = f14; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = f15; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = f14; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = f15; r19 = f12; r18 = f13; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x346c0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x3bac0; continue; } r22 = r4 & r18; @@ -38633,408 +38664,464 @@ public final class AcmeCrossAssembler extends UnixRuntime { r5 = r4 + 1; r5 = r22 < r5 ? 1 : 0; r16 = r18 + r0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x346ac; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x3baac; continue; } r23 = r19 + r0; r30 = r2 + r0; r6 = r3 + r0; - if(r22 == r4) { - /* Next insn is delay slot */ - pc=0x347e0; + if (r22 == r4) { + /* Next insn is delay slot */ + pc = 0x3bbe0; continue; } - case 0x34698: + case 0x3ba98: r4 = 32752 << 16; r5 = r4 + 1; r5 = r21 < r5 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x3474c; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x3bb4c; continue; } - case 0x346ac: + case 0x3baac: r4 = 49168 << 16; r22 = r22 + r4; r22 = r22 | r19; - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x34708; + if (r22 != r0) { + /* Next insn is delay slot */ + pc = 0x3bb08; continue; } - case 0x346c0: - f0 = readPages[(r28+-31764)>>>12][((r28+-31764)>>>2)&0x3ff]; - f1 = readPages[(r28+-31768)>>>12][((r28+-31768)>>>2)&0x3ff]; - case 0x346cc: - f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; + case 0x3bac0: + f0 = readPages[(r28 + -32204) >>> 12][((r28 + -32204) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32208) >>> 12][((r28 + -32208) >>> 2) & 0x3ff]; + case 0x3bacc: + f20 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; r29 = r29 + 72; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x34708: - f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r4 = 7 << 16; - r4 = r4 + -12264; + case 0x3bb08: + f20 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r4 = 5 << 16; + r4 = r4 + 20504; r29 = r29 + 72; - /* Next insn is delay slot */ - pc=0x37e00; - run_37e00(); return; - case 0x3474c: - if(r21 == r4) { - /* Next insn is delay slot */ - pc=0x34878; - run_34800(); return; + /* Next insn is delay slot */ + pc = 0x3f200; + run_3f200(); + return; + case 0x3bb4c: + if (r21 == r4) { + /* Next insn is delay slot */ + pc = 0x3bc78; + run_3bc00(); + return; } - case 0x34754: - if(r16 < 0) { - /* Next insn is delay slot */ - pc=0x348cc; - run_34800(); return; + case 0x3bb54: + if (r16 < 0) { + /* Next insn is delay slot */ + pc = 0x3bccc; + run_3bc00(); + return; } - case 0x3475c: + case 0x3bb5c: r20 = r0 + r0; - case 0x34760: - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x347f4; + case 0x3bb60: + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x3bbf4; continue; } r2 = 32752 << 16; - if(r21 == r2) { - /* Next insn is delay slot */ - pc=0x34988; - run_34800(); return; + if (r21 == r2) { + /* Next insn is delay slot */ + pc = 0x3bd88; + run_3bc00(); + return; } - case 0x34774: + case 0x3bb74: r2 = 16368 << 16; - if(r21 == r2) { - /* Next insn is delay slot */ - pc=0x34928; - run_34800(); return; + if (r21 == r2) { + /* Next insn is delay slot */ + pc = 0x3bd28; + run_3bc00(); + return; } r2 = 16384 << 16; - if(r30 == r2) { - /* Next insn is delay slot */ - pc=0x34ed8; - run_34e00(); return; + if (r30 == r2) { + /* Next insn is delay slot */ + pc = 0x3c2d8; + run_3c200(); + return; } r2 = 16352 << 16; - if(r30 != r2) { - /* Next insn is delay slot */ - pc=0x347f4; + if (r30 != r2) { + /* Next insn is delay slot */ + pc = 0x3bbf4; continue; } - if(r16 < 0) { - /* Next insn is delay slot */ - pc=0x347f4; + if (r16 < 0) { + /* Next insn is delay slot */ + pc = 0x3bbf4; continue; } f12 = f20; f13 = f21; - f20 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - f21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; + f20 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; r29 = r29 + 72; - /* Next insn is delay slot */ - pc=0x35800; - run_35800(); return; - case 0x347e0: - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x346ac; + /* Next insn is delay slot */ + pc = 0x3cc00; + run_3cc00(); + return; + case 0x3bbe0: + if (r19 != r0) { + /* Next insn is delay slot */ + pc = 0x3baac; continue; } - /* Next insn is delay slot */ - pc=0x34698; + /* Next insn is delay slot */ + pc = 0x3ba98; continue; - case 0x347f0: + case 0x3bbf0: r20 = r0 + r0; - case 0x347f4: + case 0x3bbf4: f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31=0x34800; - pc=0x32a00; - run_32a00(); return; - case 0x34800: - pc=0x34800; + /* Next insn is delay slot */ + r31 = 0x3bc00; + pc = 0x39e00; + run_39e00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3bc00: + pc = 0x3bc00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_34800() throws ExecutionException { /* 0x34800 - 0x34a00 */ + + private final void run_3bc00() throws ExecutionException { /* 0x3bc00 - 0x3be00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x34800: + for (;;) { + switch (pc) { + case 0x3bc00: r3 = f0; r2 = f1; - if(r23 == r0) { - /* Next insn is delay slot */ - pc=0x34888; + if (r23 == r0) { + /* Next insn is delay slot */ + pc = 0x3bc88; continue; } - case 0x34810: + case 0x3bc10: r18 = r18 >>> 31; r18 = r18 + -1; r4 = r20 | r18; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x349d4; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3bdd4; continue; } r4 = 16864 << 16; r4 = r4 + 1; r4 = r21 < r4 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x349e4; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x3bde4; continue; } r4 = 17392 << 16; r4 = r4 + 1; r21 = r21 < r4 ? 1 : 0; - if(r21 != r0) { - /* Next insn is delay slot */ - pc=0x34f80; - run_34e00(); return; + if (r21 != r0) { + /* Next insn is delay slot */ + pc = 0x3c380; + run_3c200(); + return; } r2 = 16368 << 16; r22 = r22 < r2 ? 1 : 0; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x34964; + if (r22 == r0) { + /* Next insn is delay slot */ + pc = 0x3bd64; continue; } - case 0x3485c: - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x3496c; + case 0x3bc5c: + if (r30 < 0) { + /* Next insn is delay slot */ + pc = 0x3bd6c; continue; } - case 0x34864: + case 0x3bc64: f0 = r0; f1 = r0; - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x34878: - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x34754; - run_34600(); return; + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3bc78: + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x3bb54; + run_3ba00(); + return; } - /* Next insn is delay slot */ - pc=0x346ac; - run_34600(); return; - case 0x34888: - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x348a8; + /* Next insn is delay slot */ + pc = 0x3baac; + run_3ba00(); + return; + case 0x3bc88: + if (r22 == r0) { + /* Next insn is delay slot */ + pc = 0x3bca8; continue; } r5 = 16383 << 16; r5 = r5 | 65535; r5 = r5 & r18; r4 = 16368 << 16; - if(r5 != r4) { - /* Next insn is delay slot */ - pc=0x34810; + if (r5 != r4) { + /* Next insn is delay slot */ + pc = 0x3bc10; continue; } - case 0x348a8: - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x3493c; + case 0x3bca8: + if (r30 < 0) { + /* Next insn is delay slot */ + pc = 0x3bd3c; continue; } - case 0x348b0: - if(r16 < 0) { - /* Next insn is delay slot */ - pc=0x34ea0; - run_34e00(); return; + case 0x3bcb0: + if (r16 < 0) { + /* Next insn is delay slot */ + pc = 0x3c2a0; + run_3c200(); + return; } - case 0x348b8: + case 0x3bcb8: f0 = r3; f1 = r2; - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x348cc: + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3bccc: r4 = 17216 << 16; r4 = r21 < r4 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x349c8; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3bdc8; continue; } r4 = 16368 << 16; r4 = r21 < r4 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x3475c; - run_34600(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x3bb5c; + run_3ba00(); + return; } r4 = r21 >> 20; r5 = r4 < 1044 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x350bc; - run_35000(); return; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x3c4bc; + run_3c400(); + return; } r2 = r0 + 1075; r4 = r2 - r4; - r2 = r3 >>> (r4&0x1f); - r4 = r2 << (r4&0x1f); - if(r4 != r6) { - /* Next insn is delay slot */ - pc=0x3475c; - run_34600(); return; + r2 = r3 >>> (r4 & 0x1f); + r4 = r2 << (r4 & 0x1f); + if (r4 != r6) { + /* Next insn is delay slot */ + pc = 0x3bb5c; + run_3ba00(); + return; } r2 = r2 & 1; r20 = r0 + 2; r20 = r20 - r2; - /* Next insn is delay slot */ - pc=0x34760; - run_34600(); return; - case 0x34928: - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x3505c; - run_35000(); return; + /* Next insn is delay slot */ + pc = 0x3bb60; + run_3ba00(); + return; + case 0x3bd28: + if (r30 < 0) { + /* Next insn is delay slot */ + pc = 0x3c45c; + run_3c400(); + return; } f0 = f20; f1 = f21; - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x3493c: + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3bd3c: f2 = r3; - f0 = readPages[(r28+-31764)>>>12][((r28+-31764)>>>2)&0x3ff]; + f0 = readPages[(r28 + -32204) >>> 12][((r28 + -32204) >>> 2) & 0x3ff]; f3 = r2; - f1 = readPages[(r28+-31768)>>>12][((r28+-31768)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + f1 = readPages[(r28 + -32208) >>> 12][((r28 + -32208) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + / (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r3 = f2; r2 = f3; - /* Next insn is delay slot */ - pc=0x348b0; + /* Next insn is delay slot */ + pc = 0x3bcb0; continue; - case 0x34964: - if(r30 <= 0) { - /* Next insn is delay slot */ - pc=0x34864; + case 0x3bd64: + if (r30 <= 0) { + /* Next insn is delay slot */ + pc = 0x3bc64; continue; } - case 0x3496c: - f0 = readPages[(r28+-31748)>>>12][((r28+-31748)>>>2)&0x3ff]; - f1 = readPages[(r28+-31752)>>>12][((r28+-31752)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x34988: + case 0x3bd6c: + f0 = readPages[(r28 + -32188) >>> 12][((r28 + -32188) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32192) >>> 12][((r28 + -32192) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3bd88: r2 = 49168 << 16; r2 = r22 + r2; r2 = r2 | r19; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x346c0; - run_34600(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3bac0; + run_3ba00(); + return; } r2 = 16368 << 16; r22 = r22 < r2 ? 1 : 0; - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x34f58; - run_34e00(); return; + if (r22 != r0) { + /* Next insn is delay slot */ + pc = 0x3c358; + run_3c200(); + return; } - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x34864; + if (r30 < 0) { + /* Next insn is delay slot */ + pc = 0x3bc64; continue; } - f0 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f1 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x349c8: + f0 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f1 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3bdc8: r20 = r0 + 2; - /* Next insn is delay slot */ - pc=0x34760; - run_34600(); return; - case 0x349d4: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x349e4: + /* Next insn is delay slot */ + pc = 0x3bb60; + run_3ba00(); + return; + case 0x3bdd4: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + - (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3bde4: r4 = 16 << 16; r4 = r22 < r4 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x35050; - run_35000(); return; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3c450; + run_3c400(); + return; } f4 = r3; - f0 = readPages[(r28+-31692)>>>12][((r28+-31692)>>>2)&0x3ff]; + f0 = readPages[(r28 + -32132) >>> 12][((r28 + -32132) >>> 2) & 0x3ff]; f5 = r2; - case 0x34a00: - pc=0x34a00; + case 0x3be00: + pc = 0x3be00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_34a00() throws ExecutionException { /* 0x34a00 - 0x34c00 */ + + private final void run_3be00() throws ExecutionException { /* 0x3be00 - 0x3c000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x34a00: - f1 = readPages[(r28+-31696)>>>12][((r28+-31696)>>>2)&0x3ff]; - r4 = r0 + -53; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + for (;;) { + switch (pc) { + case 0x3be00: + f1 = readPages[(r28 + -32136) >>> 12][((r28 + -32136) >>> 2) & 0x3ff]; + r4 = r0 + -53; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } r2 = f5; r3 = f4; r22 = r2 + r0; - case 0x34a18: + case 0x3be18: r8 = r22 >> 20; r8 = r8 + -1023; r8 = r8 + r4; @@ -39046,50 +39133,72 @@ public final class AcmeCrossAssembler extends UnixRuntime { r10 = 16368 << 16; r4 = r22 < r4 ? 1 : 0; r10 = r22 | r10; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x35040; - run_35000(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x3c440; + run_3c400(); + return; } r4 = 11 << 16; r4 = r4 | 46714; r22 = r22 < r4 ? 1 : 0; - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x3510c; - run_35000(); return; + if (r22 != r0) { + /* Next insn is delay slot */ + pc = 0x3c50c; + run_3c400(); + return; } r4 = 65520 << 16; r8 = r8 + 1; r10 = r10 + r4; r11 = r0 + r0; r9 = r0 + r0; - case 0x34a74: - r4 = 7 << 16; + case 0x3be74: + r4 = 6 << 16; r9 = r9 << 3; - r4 = r4 + -296; + r4 = r4 + -28392; r4 = r9 + r4; - f14 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; + f14 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; f16 = r3; - f15 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; + f15 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; f17 = r10; - f12 = readPages[(r28+-31764)>>>12][((r28+-31764)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))+(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f13 = readPages[(r28+-31768)>>>12][((r28+-31768)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))-(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + f12 = readPages[(r28 + -32204) >>> 12][((r28 + -32204) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f17 & 0xffffffffL) << 32) | (f16 & 0xffffffffL))) + + (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f13 = readPages[(r28 + -32208) >>> 12][((r28 + -32208) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f17 & 0xffffffffL) << 32) | (f16 & 0xffffffffL))) + - (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r7 = r0 + r0; f4 = r7; r7 = r10 >> 1; r5 = r0 + r0; f8 = r5; r5 = r0 + r0; - f18 = readPages[(r28+-31612)>>>12][((r28+-31612)>>>2)&0x3ff]; - r2 = 7 << 16; - f19 = readPages[(r28+-31616)>>>12][((r28+-31616)>>>2)&0x3ff]; - r2 = r2 + -328; - r2 = r9 + r2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } + f18 = readPages[(r28 + -32052) >>> 12][((r28 + -32052) >>> 2) & 0x3ff]; + r2 = 6 << 16; + f19 = readPages[(r28 + -32056) >>> 12][((r28 + -32056) >>> 2) & 0x3ff]; + r2 = r2 + -28424; + r2 = r9 + r2; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } r6 = f7; f5 = r6; r6 = 8192 << 16; @@ -39097,168 +39206,460 @@ public final class AcmeCrossAssembler extends UnixRuntime { r6 = 8 << 16; r6 = r7 + r6; r4 = r6 + r11; - f9 = r4; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f16 = readPages[(r28+-31636)>>>12][((r28+-31636)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f10 = readPages[(r28+-31676)>>>12][((r28+-31676)>>>2)&0x3ff]; - f17 = readPages[(r28+-31640)>>>12][((r28+-31640)>>>2)&0x3ff]; - f11 = readPages[(r28+-31680)>>>12][((r28+-31680)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f8 = readPages[(r28+-31684)>>>12][((r28+-31684)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f15 = (int)(l >>> 32); f14 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f9 = readPages[(r28+-31688)>>>12][((r28+-31688)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f10 = readPages[(r28+-31668)>>>12][((r28+-31668)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f11 = readPages[(r28+-31672)>>>12][((r28+-31672)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f10 = readPages[(r28+-31660)>>>12][((r28+-31660)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f11 = readPages[(r28+-31664)>>>12][((r28+-31664)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f10 = readPages[(r28+-31652)>>>12][((r28+-31652)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f11 = readPages[(r28+-31656)>>>12][((r28+-31656)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f8 = readPages[(r28+-31644)>>>12][((r28+-31644)>>>2)&0x3ff]; - f9 = readPages[(r28+-31648)>>>12][((r28+-31648)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } + f9 = r4; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + - (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f17 & 0xffffffffL) << 32) | (f16 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f16 = readPages[(r28 + -32076) >>> 12][((r28 + -32076) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f10 = readPages[(r28 + -32116) >>> 12][((r28 + -32116) >>> 2) & 0x3ff]; + f17 = readPages[(r28 + -32080) >>> 12][((r28 + -32080) >>> 2) & 0x3ff]; + f11 = readPages[(r28 + -32120) >>> 12][((r28 + -32120) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f8 = readPages[(r28 + -32124) >>> 12][((r28 + -32124) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f15 = (int) (l >>> 32); + f14 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f9 = readPages[(r28 + -32128) >>> 12][((r28 + -32128) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f10 = readPages[(r28 + -32108) >>> 12][((r28 + -32108) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f11 = readPages[(r28 + -32112) >>> 12][((r28 + -32112) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f10 = readPages[(r28 + -32100) >>> 12][((r28 + -32100) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f11 = readPages[(r28 + -32104) >>> 12][((r28 + -32104) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f10 = readPages[(r28 + -32092) >>> 12][((r28 + -32092) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f11 = readPages[(r28 + -32096) >>> 12][((r28 + -32096) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f8 = readPages[(r28 + -32084) >>> 12][((r28 + -32084) >>> 2) & 0x3ff]; + f9 = readPages[(r28 + -32088) >>> 12][((r28 + -32088) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f17 & 0xffffffffL) << 32) | (f16 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } f8 = r5; r4 = f11; r5 = r0 + r0; - f9 = r4; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f16 = readPages[(r28+-31620)>>>12][((r28+-31620)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f17 = readPages[(r28+-31624)>>>12][((r28+-31624)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - f3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = 7 << 16; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - case 0x34c00: - pc=0x34c00; + f9 = r4; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + - (Double.longBitsToDouble(((f17 & 0xffffffffL) << 32) | (f16 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f16 = readPages[(r28 + -32060) >>> 12][((r28 + -32060) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f17 = readPages[(r28 + -32064) >>> 12][((r28 + -32064) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + f3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r2 = 6 << 16; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + + (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + case 0x3c000: + pc = 0x3c000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_34c00() throws ExecutionException { /* 0x34c00 - 0x34e00 */ + + private final void run_3c000() throws ExecutionException { /* 0x3c000 - 0x3c200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x34c00: - f10 = r5; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r2 = r2 + -312; + for (;;) { + switch (pc) { + case 0x3c000: + f10 = r5; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r2 = r2 + -28408; r4 = f1; - f0 = readPages[(r28+-31628)>>>12][((r28+-31628)>>>2)&0x3ff]; + f0 = readPages[(r28 + -32068) >>> 12][((r28 + -32068) >>> 2) & 0x3ff]; f11 = r4; - f1 = readPages[(r28+-31632)>>>12][((r28+-31632)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))*(Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))); f17 = (int)(l >>> 32); f16 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f19&0xffffffffL) << 32) | (f18&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } + f1 = readPages[(r28 + -32072) >>> 12][((r28 + -32072) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + * (Double.longBitsToDouble(((f17 & 0xffffffffL) << 32) | (f16 & 0xffffffffL)))); + f17 = (int) (l >>> 32); + f16 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f19 & 0xffffffffL) << 32) | (f18 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } r9 = r9 + r2; - r5 = r0 + r0; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f17&0xffffffffL) << 32) | (f16&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f2 = r8; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits(((double)f2)); f11 = (int)(l >>> 32); f10 = (int)l; } - f2 = readPages[(r9+4)>>>12][((r9+4)>>>2)&0x3ff]; - f3 = readPages[(r9+0)>>>12][((r9+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } + r5 = r0 + r0; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f17 & 0xffffffffL) << 32) | (f16 & 0xffffffffL))) + + (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f2 = r8; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double.doubleToLongBits(((double) f2)); + f11 = (int) (l >>> 32); + f10 = (int) l; + } + f2 = readPages[(r9 + 4) >>> 12][((r9 + 4) >>> 2) & 0x3ff]; + f3 = readPages[(r9 + 0) >>> 12][((r9 + 0) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } r4 = f9; f8 = r5; - f9 = r4; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - case 0x34c88: + f9 = r4; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + - (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + case 0x3c088: r20 = r20 + -1; r18 = r20 | r18; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x34f4c; - run_34e00(); return; + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x3c34c; + run_3c200(); + return; } - f20 = readPages[(r28+-31756)>>>12][((r28+-31756)>>>2)&0x3ff]; - f21 = readPages[(r28+-31760)>>>12][((r28+-31760)>>>2)&0x3ff]; - case 0x34ca4: + f20 = readPages[(r28 + -32196) >>> 12][((r28 + -32196) >>> 2) & 0x3ff]; + f21 = readPages[(r28 + -32200) >>> 12][((r28 + -32200) >>> 2) & 0x3ff]; + case 0x3c0a4: r5 = r0 + r0; - r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + r4 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; f0 = r5; - f2 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + f2 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; f1 = r4; - f3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r4 = 16528 << 16; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + f3 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r4 = 16528 << 16; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r2 = f1; r3 = f0; r5 = r2 < r4 ? 1 : 0; r7 = r2 + r0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x34ee4; - run_34e00(); return; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x3c2e4; + run_3c200(); + return; } r4 = r2 - r4; r4 = r4 | r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x35078; - run_35000(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x3c478; + run_3c400(); + return; } - f2 = readPages[(r28+-31604)>>>12][((r28+-31604)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f3 = readPages[(r28+-31608)>>>12][((r28+-31608)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x35078; - run_35000(); return; + f2 = readPages[(r28 + -32044) >>> 12][((r28 + -32044) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f3 = readPages[(r28 + -32048) >>> 12][((r28 + -32048) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) < (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x3c478; + run_3c400(); + return; } r5 = r2 + r0; - case 0x34d28: + case 0x3c128: r4 = r5 >> 20; r3 = 16 << 16; r4 = r4 + -1022; - r4 = r3 >> (r4&0x1f); + r4 = r3 >> (r4 & 0x1f); r2 = r4 + r2; r8 = r2 << 1; r8 = r8 >>> 21; r6 = r3 + -1; r9 = r8 + -1023; - r9 = r6 >> (r9&0x1f); + r9 = r6 >> (r9 & 0x1f); r9 = ~(r0 | r9); r4 = r9 & r2; r5 = r0 + r0; @@ -39268,430 +39669,769 @@ public final class AcmeCrossAssembler extends UnixRuntime { r2 = r0 + 1043; r8 = r2 - r8; f1 = r4; - r6 = r3 >> (r8&0x1f); - if(r7 < 0) { - /* Next insn is delay slot */ - pc=0x35130; - run_35000(); return; + r6 = r3 >> (r8 & 0x1f); + if (r7 < 0) { + /* Next insn is delay slot */ + pc = 0x3c530; + run_3c400(); + return; } - case 0x34d80: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - r4 = r6 << 20; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - case 0x34d8c: + case 0x3c180: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + r4 = r6 << 20; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + case 0x3c18c: r3 = r0 + r0; r2 = f1; f0 = r3; - f4 = readPages[(r28+-31588)>>>12][((r28+-31588)>>>2)&0x3ff]; + f4 = readPages[(r28 + -32028) >>> 12][((r28 + -32028) >>> 2) & 0x3ff]; f1 = r2; - f2 = readPages[(r28+-31580)>>>12][((r28+-31580)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f3 = readPages[(r28+-31584)>>>12][((r28+-31584)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - f8 = readPages[(r28+-31572)>>>12][((r28+-31572)>>>2)&0x3ff]; - f5 = readPages[(r28+-31592)>>>12][((r28+-31592)>>>2)&0x3ff]; - f9 = readPages[(r28+-31576)>>>12][((r28+-31576)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f6 = readPages[(r28+-31556)>>>12][((r28+-31556)>>>2)&0x3ff]; - f7 = readPages[(r28+-31560)>>>12][((r28+-31560)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - f4 = readPages[(r28+-31564)>>>12][((r28+-31564)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f5 = readPages[(r28+-31568)>>>12][((r28+-31568)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - case 0x34e00: - pc=0x34e00; + f2 = readPages[(r28 + -32020) >>> 12][((r28 + -32020) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f3 = readPages[(r28 + -32024) >>> 12][((r28 + -32024) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } + f8 = readPages[(r28 + -32012) >>> 12][((r28 + -32012) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -32032) >>> 12][((r28 + -32032) >>> 2) & 0x3ff]; + f9 = readPages[(r28 + -32016) >>> 12][((r28 + -32016) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f6 = readPages[(r28 + -31996) >>> 12][((r28 + -31996) >>> 2) & 0x3ff]; + f7 = readPages[(r28 + -32000) >>> 12][((r28 + -32000) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } + f4 = readPages[(r28 + -32004) >>> 12][((r28 + -32004) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f5 = readPages[(r28 + -32008) >>> 12][((r28 + -32008) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + case 0x3c200: + pc = 0x3c200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_34e00() throws ExecutionException { /* 0x34e00 - 0x35000 */ + + private final void run_3c200() throws ExecutionException { /* 0x3c200 - 0x3c400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x34e00: - f6 = readPages[(r28+-31548)>>>12][((r28+-31548)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f7 = readPages[(r28+-31552)>>>12][((r28+-31552)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f6 = readPages[(r28+-31540)>>>12][((r28+-31540)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f7 = readPages[(r28+-31544)>>>12][((r28+-31544)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f6 = readPages[(r28+-31532)>>>12][((r28+-31532)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f7 = readPages[(r28+-31536)>>>12][((r28+-31536)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f6 = readPages[(r28+-31524)>>>12][((r28+-31524)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f7 = readPages[(r28+-31528)>>>12][((r28+-31528)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } + for (;;) { + switch (pc) { + case 0x3c200: + f6 = readPages[(r28 + -31988) >>> 12][((r28 + -31988) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f7 = readPages[(r28 + -31992) >>> 12][((r28 + -31992) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f6 = readPages[(r28 + -31980) >>> 12][((r28 + -31980) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f7 = readPages[(r28 + -31984) >>> 12][((r28 + -31984) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f6 = readPages[(r28 + -31972) >>> 12][((r28 + -31972) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f7 = readPages[(r28 + -31976) >>> 12][((r28 + -31976) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f6 = readPages[(r28 + -31964) >>> 12][((r28 + -31964) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f7 = readPages[(r28 + -31968) >>> 12][((r28 + -31968) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } r2 = f13; r2 = r4 + r2; r3 = r2 >> 20; - if(r3 <= 0) { - /* Next insn is delay slot */ - pc=0x3511c; - run_35000(); return; + if (r3 <= 0) { + /* Next insn is delay slot */ + pc = 0x3c51c; + run_3c400(); + return; } r17 = f12; f0 = r17; - f1 = r2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x34ea0: + f1 = r2; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3c2a0: r4 = 49168 << 16; r4 = r22 + r4; r4 = r20 | r4; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x35098; - run_35000(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x3c498; + run_3c400(); + return; } f4 = r3; f6 = r3; f5 = r2; - f7 = r2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x34ed8: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x34ee4: + f7 = r2; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3c2d8: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3c2e4: r5 = 32767 << 16; r5 = r5 | 65535; r5 = r5 & r2; r4 = r4 | 52224; r4 = r5 < r4 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x350e8; - run_35000(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x3c4e8; + run_3c400(); + return; } r4 = 16239 << 16; r4 = r4 + 13312; r4 = r4 + r2; r4 = r4 | r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x34f2c; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x3c32c; continue; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) <= (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3c128; + run_3c000(); + return; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))<=(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x34d28; - run_34c00(); return; - } - case 0x34f2c: - f2 = readPages[(r28+-31596)>>>12][((r28+-31596)>>>2)&0x3ff]; - f3 = readPages[(r28+-31600)>>>12][((r28+-31600)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x34f4c: + case 0x3c32c: + f2 = readPages[(r28 + -32036) >>> 12][((r28 + -32036) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32040) >>> 12][((r28 + -32040) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3c34c: f20 = f12; f21 = f13; - /* Next insn is delay slot */ - pc=0x34ca4; - run_34c00(); return; - case 0x34f58: - if(r30 >= 0) { - /* Next insn is delay slot */ - pc=0x34864; - run_34800(); return; + /* Next insn is delay slot */ + pc = 0x3c0a4; + run_3c000(); + return; + case 0x3c358: + if (r30 >= 0) { + /* Next insn is delay slot */ + pc = 0x3bc64; + run_3bc00(); + return; } - r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + r3 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r4 = 32768 << 16; f0 = r3; r2 = r5 ^ r4; f1 = r2; - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x34f80: + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3c380: r4 = 16367 << 16; r4 = r4 | 65535; r5 = r22 < r4 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x3485c; - run_34800(); return; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x3bc5c; + run_3bc00(); + return; } r4 = r4 + 2; r22 = r22 < r4 ? 1 : 0; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x34964; - run_34800(); return; + if (r22 == r0) { + /* Next insn is delay slot */ + pc = 0x3bd64; + run_3bc00(); + return; } - f12 = readPages[(r28+-31764)>>>12][((r28+-31764)>>>2)&0x3ff]; + f12 = readPages[(r28 + -32204) >>> 12][((r28 + -32204) >>> 2) & 0x3ff]; f10 = r3; - f13 = readPages[(r28+-31768)>>>12][((r28+-31768)>>>2)&0x3ff]; + f13 = readPages[(r28 + -32208) >>> 12][((r28 + -32208) >>> 2) & 0x3ff]; f11 = r2; - f0 = readPages[(r28+-31724)>>>12][((r28+-31724)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f1 = readPages[(r28+-31728)>>>12][((r28+-31728)>>>2)&0x3ff]; - f2 = readPages[(r28+-31716)>>>12][((r28+-31716)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f3 = readPages[(r28+-31720)>>>12][((r28+-31720)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } - f6 = readPages[(r28+-31740)>>>12][((r28+-31740)>>>2)&0x3ff]; - f4 = readPages[(r28+-31732)>>>12][((r28+-31732)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f7 = readPages[(r28+-31744)>>>12][((r28+-31744)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f0 = readPages[(r28+-31708)>>>12][((r28+-31708)>>>2)&0x3ff]; - f5 = readPages[(r28+-31736)>>>12][((r28+-31736)>>>2)&0x3ff]; - f1 = readPages[(r28+-31712)>>>12][((r28+-31712)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - case 0x35000: - pc=0x35000; + f0 = readPages[(r28 + -32164) >>> 12][((r28 + -32164) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f1 = readPages[(r28 + -32168) >>> 12][((r28 + -32168) >>> 2) & 0x3ff]; + f2 = readPages[(r28 + -32156) >>> 12][((r28 + -32156) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f3 = readPages[(r28 + -32160) >>> 12][((r28 + -32160) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } + f6 = readPages[(r28 + -32180) >>> 12][((r28 + -32180) >>> 2) & 0x3ff]; + f4 = readPages[(r28 + -32172) >>> 12][((r28 + -32172) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f7 = readPages[(r28 + -32184) >>> 12][((r28 + -32184) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f0 = readPages[(r28 + -32148) >>> 12][((r28 + -32148) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -32176) >>> 12][((r28 + -32176) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32152) >>> 12][((r28 + -32152) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + case 0x3c400: + pc = 0x3c400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_35000() throws ExecutionException { /* 0x35000 - 0x35200 */ + + private final void run_3c400() throws ExecutionException { /* 0x3c400 - 0x3c600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x35000: - f8 = readPages[(r28+-31700)>>>12][((r28+-31700)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x3c400: + f8 = readPages[(r28 + -32140) >>> 12][((r28 + -32140) >>> 2) & 0x3ff]; r5 = r0 + r0; - f9 = readPages[(r28+-31704)>>>12][((r28+-31704)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f8 = r5; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + f9 = readPages[(r28 + -32144) >>> 12][((r28 + -32144) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f8 = r5; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r4 = f3; - f9 = r4; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - /* Next insn is delay slot */ - pc=0x34c88; - run_34c00(); return; - case 0x35040: + f9 = r4; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3c088; + run_3c000(); + return; + case 0x3c440: r11 = r0 + r0; r9 = r0 + r0; - /* Next insn is delay slot */ - pc=0x34a74; - run_34a00(); return; - case 0x35050: + /* Next insn is delay slot */ + pc = 0x3be74; + run_3be00(); + return; + case 0x3c450: r4 = r0 + r0; - /* Next insn is delay slot */ - pc=0x34a18; - run_34a00(); return; - case 0x3505c: - f0 = readPages[(r28+-31764)>>>12][((r28+-31764)>>>2)&0x3ff]; - f1 = readPages[(r28+-31768)>>>12][((r28+-31768)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x35078: - f2 = readPages[(r28+-31748)>>>12][((r28+-31748)>>>2)&0x3ff]; - f3 = readPages[(r28+-31752)>>>12][((r28+-31752)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x35098: + /* Next insn is delay slot */ + pc = 0x3be18; + run_3be00(); + return; + case 0x3c45c: + f0 = readPages[(r28 + -32204) >>> 12][((r28 + -32204) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -32208) >>> 12][((r28 + -32208) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + / (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3c478: + f2 = readPages[(r28 + -32188) >>> 12][((r28 + -32188) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -32192) >>> 12][((r28 + -32192) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3c498: r4 = r0 + 1; - if(r20 != r4) { - /* Next insn is delay slot */ - pc=0x348b8; - run_34800(); return; + if (r20 != r4) { + /* Next insn is delay slot */ + pc = 0x3bcb8; + run_3bc00(); + return; } r6 = 32768 << 16; f0 = r3; r4 = r2 ^ r6; f1 = r4; - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x350bc: - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x347f0; - run_34600(); return; + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3c4bc: + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x3bbf0; + run_3ba00(); + return; } r2 = r0 + 1043; r4 = r2 - r4; - r2 = r21 >> (r4&0x1f); - r4 = r2 << (r4&0x1f); - if(r4 == r21) { - /* Next insn is delay slot */ - pc=0x3513c; + r2 = r21 >> (r4 & 0x1f); + r4 = r2 << (r4 & 0x1f); + if (r4 == r21) { + /* Next insn is delay slot */ + pc = 0x3c53c; continue; } r20 = r0 + r0; - /* Next insn is delay slot */ - pc=0x34774; - run_34600(); return; - case 0x350e8: + /* Next insn is delay slot */ + pc = 0x3bb74; + run_3ba00(); + return; + case 0x3c4e8: r4 = 16352 << 16; r4 = r4 + 1; r4 = r5 < r4 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x34d28; - run_34c00(); return; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3c128; + run_3c000(); + return; } r4 = r0 + r0; r6 = r0 + r0; - /* Next insn is delay slot */ - pc=0x34d8c; - run_34c00(); return; - case 0x3510c: + /* Next insn is delay slot */ + pc = 0x3c18c; + run_3c000(); + return; + case 0x3c50c: r11 = 4 << 16; r9 = r0 + 1; - /* Next insn is delay slot */ - pc=0x34a74; - run_34a00(); return; - case 0x3511c: - /* Next insn is delay slot */ - r31=0x35124; - pc=0x38400; - run_38400(); return; - case 0x35124: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x346cc; - run_34600(); return; - case 0x35130: + /* Next insn is delay slot */ + pc = 0x3be74; + run_3be00(); + return; + case 0x3c51c: + /* Next insn is delay slot */ + r31 = 0x3c524; + pc = 0x3f800; + run_3f800(); + return; + case 0x3c524: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3bacc; + run_3ba00(); + return; + case 0x3c530: r6 = r0 - r6; - /* Next insn is delay slot */ - pc=0x34d80; - run_34c00(); return; - case 0x3513c: + /* Next insn is delay slot */ + pc = 0x3c180; + run_3c000(); + return; + case 0x3c53c: r2 = r2 & 1; r20 = r0 + 2; r20 = r20 - r2; - /* Next insn is delay slot */ - pc=0x34774; - run_34600(); return; - case 0x35200: - pc=0x35200; + /* Next insn is delay slot */ + pc = 0x3bb74; + run_3ba00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3c600: + pc = 0x3c600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_35200() throws ExecutionException { /* 0x35200 - 0x35400 */ + + private final void run_3c600() throws ExecutionException { /* 0x3c600 - 0x3c800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x35200: + for (;;) { + switch (pc) { + case 0x3c600: r29 = r29 + -64; r2 = f13; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r18; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r18; r18 = 32767 << 16; r18 = r18 | 65535; r18 = r18 & r2; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r17; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r17; r17 = r2 + r0; r2 = 16361 << 16; r2 = r2 + 8700; r2 = r18 < r2 ? 1 : 0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r16; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; r16 = r6 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3542c; - run_35400(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3c82c; + run_3c800(); + return; } r2 = 16386 << 16; r2 = r2 | 55676; r2 = r18 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x352c8; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3c6c8; continue; } - f2 = readPages[(r28+-31516)>>>12][((r28+-31516)>>>2)&0x3ff]; - f3 = readPages[(r28+-31520)>>>12][((r28+-31520)>>>2)&0x3ff]; - if(r17 <= 0) { - /* Next insn is delay slot */ - pc=0x35690; - run_35600(); return; + f2 = readPages[(r28 + -31956) >>> 12][((r28 + -31956) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31960) >>> 12][((r28 + -31960) >>> 2) & 0x3ff]; + if (r17 <= 0) { + /* Next insn is delay slot */ + pc = 0x3ca90; + run_3ca00(); + return; } r2 = 16377 << 16; - r2 = r2 + 8699; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x35478; - run_35400(); return; + r2 = r2 + 8699; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x3c878; + run_3c800(); + return; } - f2 = readPages[(r28+-31508)>>>12][((r28+-31508)>>>2)&0x3ff]; - f3 = readPages[(r28+-31512)>>>12][((r28+-31512)>>>2)&0x3ff]; - case 0x3528c: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r18 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - r17 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = f4; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = f5; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = f2; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f3; + f2 = readPages[(r28 + -31948) >>> 12][((r28 + -31948) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31952) >>> 12][((r28 + -31952) >>> 2) & 0x3ff]; + case 0x3c68c: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r18 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + r17 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = f4; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = f5; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = f2; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = f3; r2 = r0 + 1; - r16 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; + r16 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x352c8: + case 0x3c6c8: r2 = 16697 << 16; r2 = r2 + 8700; r2 = r18 < r2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x35494; - run_35400(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3c894; + run_3c800(); + return; } r2 = 32752 << 16; r2 = r18 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3545c; - run_35400(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3c85c; + run_3c800(); + return; } r9 = f12; r4 = r0 + r0; @@ -39709,211 +40449,342 @@ public final class AcmeCrossAssembler extends UnixRuntime { r1 = r2 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f0 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f0 = (int)(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL))); break; // Round towards zero - case 2: f0 = (int)Math.ceil((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards plus infinity - case 3: f0 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f0 = (int) (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))); + break; // Round towards zero + case 2: + f0 = (int) Math + .ceil((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f0 = (int) Math + .floor((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + break; // Round towards minus infinity } - fcsr = r2; - { long l = Double.doubleToLongBits(((double)f0)); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f1; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f2 = readPages[(r28+-31452)>>>12][((r28+-31452)>>>2)&0x3ff]; - f3 = readPages[(r28+-31456)>>>12][((r28+-31456)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + fcsr = r2; { + long l = Double.doubleToLongBits(((double) f0)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = f0; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = f1; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f2 = readPages[(r28 + -31892) >>> 12][((r28 + -31892) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31896) >>> 12][((r28 + -31896) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } r4 = fcsr; r4 = fcsr; r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f0 = (int)Math.floor((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f0 = (int)(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL))); break; // Round towards zero - case 2: f0 = (int)Math.ceil((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); break; // Round towards plus infinity - case 3: f0 = (int)Math.floor((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f0 = (int) (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))); + break; // Round towards zero + case 2: + f0 = (int) Math + .ceil((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f0 = (int) Math + .floor((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + break; // Round towards minus infinity } - fcsr = r4; - { long l = Double.doubleToLongBits(((double)f0)); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f0; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + fcsr = r4; { + long l = Double.doubleToLongBits(((double) f0)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f0; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } f2 = r0; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f1; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f1; f3 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))==(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f4; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = f5; - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x356dc; - run_35600(); return; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) == (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f4; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = f5; + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3cadc; + run_3ca00(); + return; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x356e8; - run_35600(); return; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) == (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3cae8; + run_3ca00(); + return; } r7 = r0 + 1; - case 0x353d8: + case 0x3c7d8: r2 = r0 + 2; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r2 = 7 << 16; - r2 = r2 + -152; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + r2 = 6 << 16; + r2 = r2 + -28248; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; r4 = r29 + 24; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x353fc; - pc=0x36000; - run_36000(); return; - case 0x353fc: - if(r17 >= 0) { - /* Next insn is delay slot */ - pc=0x35440; - run_35400(); return; - } - case 0x35400: - pc=0x35400; + /* Next insn is delay slot */ + r31 = 0x3c7fc; + pc = 0x3d400; + run_3d400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3c7fc: + if (r17 >= 0) { + /* Next insn is delay slot */ + pc = 0x3c840; + run_3c800(); + return; + } + case 0x3c800: + pc = 0x3c800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_35400() throws ExecutionException { /* 0x35400 - 0x35600 */ + + private final void run_3c800() throws ExecutionException { /* 0x3c800 - 0x3ca00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x35400: - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x3c800: + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r3 = 32768 << 16; r4 = r4 ^ r3; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; - r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r2 = r0 - r2; r3 = r4 ^ r3; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x35440; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x3c840; continue; - case 0x3542c: - writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = f12; - writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = f13; - writePages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff] = r0; - writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = r0; + case 0x3c82c: + writePages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff] = f12; + writePages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff] = f13; + writePages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff] = r0; + writePages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff] = r0; r2 = r0 + r0; - case 0x35440: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r18 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r17 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r16 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; + case 0x3c840: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3545c: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff] = f0; - writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = f1; - writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = f0; - writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x35440; + case 0x3c85c: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff] = f0; + writePages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff] = f1; + writePages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff] = f0; + writePages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff] = f1; + /* Next insn is delay slot */ + pc = 0x3c840; continue; - case 0x35478: - f4 = readPages[(r28+-31500)>>>12][((r28+-31500)>>>2)&0x3ff]; - f2 = readPages[(r28+-31492)>>>12][((r28+-31492)>>>2)&0x3ff]; - f5 = readPages[(r28+-31504)>>>12][((r28+-31504)>>>2)&0x3ff]; - f3 = readPages[(r28+-31496)>>>12][((r28+-31496)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x3528c; - run_35200(); return; - case 0x35494: - /* Next insn is delay slot */ - r31=0x3549c; - pc=0x32a00; - run_32a00(); return; - case 0x3549c: - f2 = readPages[(r28+-31484)>>>12][((r28+-31484)>>>2)&0x3ff]; - f4 = readPages[(r28+-31476)>>>12][((r28+-31476)>>>2)&0x3ff]; - f3 = readPages[(r28+-31488)>>>12][((r28+-31488)>>>2)&0x3ff]; - f5 = readPages[(r28+-31480)>>>12][((r28+-31480)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + case 0x3c878: + f4 = readPages[(r28 + -31940) >>> 12][((r28 + -31940) >>> 2) & 0x3ff]; + f2 = readPages[(r28 + -31932) >>> 12][((r28 + -31932) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -31944) >>> 12][((r28 + -31944) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31936) >>> 12][((r28 + -31936) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3c68c; + run_3c600(); + return; + case 0x3c894: + /* Next insn is delay slot */ + r31 = 0x3c89c; + pc = 0x39e00; + run_39e00(); + return; + case 0x3c89c: + f2 = readPages[(r28 + -31924) >>> 12][((r28 + -31924) >>> 2) & 0x3ff]; + f4 = readPages[(r28 + -31916) >>> 12][((r28 + -31916) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31928) >>> 12][((r28 + -31928) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -31920) >>> 12][((r28 + -31920) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r4 = fcsr; r4 = fcsr; r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f4 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f4 = (int)(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL))); break; // Round towards zero - case 2: f4 = (int)Math.ceil((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards plus infinity - case 3: f4 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f4 = (int) Math.floor( + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f4 = (int) (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))); + break; // Round towards zero + case 2: + f4 = (int) Math + .ceil((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f4 = (int) Math + .floor((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + break; // Round towards minus infinity } - fcsr = r4; - { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } + fcsr = r4; { + long l = Double.doubleToLongBits(((double) f4)); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r2 = f4; - f4 = readPages[(r28+-31516)>>>12][((r28+-31516)>>>2)&0x3ff]; + f4 = readPages[(r28 + -31956) >>> 12][((r28 + -31956) >>> 2) & 0x3ff]; r3 = r2 < 32 ? 1 : 0; - f5 = readPages[(r28+-31520)>>>12][((r28+-31520)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f4 = readPages[(r28+-31508)>>>12][((r28+-31508)>>>2)&0x3ff]; - f5 = readPages[(r28+-31512)>>>12][((r28+-31512)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x355a8; + f5 = readPages[(r28 + -31960) >>> 12][((r28 + -31960) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f4 = readPages[(r28 + -31948) >>> 12][((r28 + -31948) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -31952) >>> 12][((r28 + -31952) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x3c9a8; continue; } r4 = r2 + -1; - r3 = 7 << 16; + r3 = 6 << 16; r4 = r4 << 2; - r3 = r3 + -280; + r3 = r3 + -28376; r3 = r4 + r3; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r3 == r18) { - /* Next insn is delay slot */ - pc=0x355a8; + r3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + if (r3 == r18) { + /* Next insn is delay slot */ + pc = 0x3c9a8; continue; - } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } r5 = f6; r4 = f7; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; - case 0x35550: + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r5; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; + case 0x3c950: f6 = r5; - f7 = r4; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + f7 = r4; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r7 = f2; r6 = f3; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r7; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r6; - if(r17 >= 0) { - /* Next insn is delay slot */ - pc=0x35440; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r7; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r6; + if (r17 >= 0) { + /* Next insn is delay slot */ + pc = 0x3c840; continue; } r3 = 32768 << 16; r4 = r4 ^ r3; r3 = r6 ^ r3; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r3; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r7; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r5; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r7; r2 = r0 - r2; - /* Next insn is delay slot */ - pc=0x35440; + /* Next insn is delay slot */ + pc = 0x3c840; continue; - case 0x355a8: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } + case 0x3c9a8: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } r18 = r18 >> 20; r4 = f7; r5 = f6; @@ -39921,150 +40792,256 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = r3 & 2047; r3 = r18 - r3; r3 = r3 < 17 ? 1 : 0; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x35550; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r5; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x3c950; continue; } - f4 = readPages[(r28+-31500)>>>12][((r28+-31500)>>>2)&0x3ff]; - f5 = readPages[(r28+-31504)>>>12][((r28+-31504)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f0 = readPages[(r28+-31492)>>>12][((r28+-31492)>>>2)&0x3ff]; - case 0x35600: - pc=0x35600; + f4 = readPages[(r28 + -31940) >>> 12][((r28 + -31940) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -31944) >>> 12][((r28 + -31944) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f0 = readPages[(r28 + -31932) >>> 12][((r28 + -31932) >>> 2) & 0x3ff]; + case 0x3ca00: + pc = 0x3ca00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_35600() throws ExecutionException { /* 0x35600 - 0x35800 */ + + private final void run_3ca00() throws ExecutionException { /* 0x3ca00 - 0x3cc00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x35600: - f1 = readPages[(r28+-31496)>>>12][((r28+-31496)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + for (;;) { + switch (pc) { + case 0x3ca00: + f1 = readPages[(r28 + -31936) >>> 12][((r28 + -31936) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r4 = f1; r5 = f0; r6 = r4 >>> 20; r6 = r6 & 2047; r18 = r18 - r6; r18 = r18 < 50 ? 1 : 0; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x35710; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r5; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x3cb10; continue; } - f4 = readPages[(r28+-31468)>>>12][((r28+-31468)>>>2)&0x3ff]; - f5 = readPages[(r28+-31472)>>>12][((r28+-31472)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f6 = readPages[(r28+-31460)>>>12][((r28+-31460)>>>2)&0x3ff]; - f7 = readPages[(r28+-31464)>>>12][((r28+-31464)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + f4 = readPages[(r28 + -31908) >>> 12][((r28 + -31908) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -31912) >>> 12][((r28 + -31912) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f6 = readPages[(r28 + -31900) >>> 12][((r28 + -31900) >>> 2) & 0x3ff]; + f7 = readPages[(r28 + -31904) >>> 12][((r28 + -31904) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r5 = f2; r4 = f3; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r5; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x35550; - run_35400(); return; - case 0x35690: + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r5; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x3c950; + run_3c800(); + return; + case 0x3ca90: r2 = 16377 << 16; - r2 = r2 + 8699; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x356f4; + r2 = r2 + 8699; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x3caf4; continue; } - f2 = readPages[(r28+-31508)>>>12][((r28+-31508)>>>2)&0x3ff]; - f3 = readPages[(r28+-31512)>>>12][((r28+-31512)>>>2)&0x3ff]; - case 0x356b4: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - r2 = r0 + -1; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = f4; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = f5; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = f2; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = f3; - /* Next insn is delay slot */ - pc=0x35440; - run_35400(); return; - case 0x356dc: + f2 = readPages[(r28 + -31948) >>> 12][((r28 + -31948) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31952) >>> 12][((r28 + -31952) >>> 2) & 0x3ff]; + case 0x3cab4: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + r2 = r0 + -1; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = f4; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = f5; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = f2; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = f3; + /* Next insn is delay slot */ + pc = 0x3c840; + run_3c800(); + return; + case 0x3cadc: r7 = r0 + 3; - /* Next insn is delay slot */ - pc=0x353d8; - run_35200(); return; - case 0x356e8: + /* Next insn is delay slot */ + pc = 0x3c7d8; + run_3c600(); + return; + case 0x3cae8: r7 = r0 + 2; - /* Next insn is delay slot */ - pc=0x353d8; - run_35200(); return; - case 0x356f4: - f4 = readPages[(r28+-31500)>>>12][((r28+-31500)>>>2)&0x3ff]; - f2 = readPages[(r28+-31492)>>>12][((r28+-31492)>>>2)&0x3ff]; - f5 = readPages[(r28+-31504)>>>12][((r28+-31504)>>>2)&0x3ff]; - f3 = readPages[(r28+-31496)>>>12][((r28+-31496)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x356b4; + /* Next insn is delay slot */ + pc = 0x3c7d8; + run_3c600(); + return; + case 0x3caf4: + f4 = readPages[(r28 + -31940) >>> 12][((r28 + -31940) >>> 2) & 0x3ff]; + f2 = readPages[(r28 + -31932) >>> 12][((r28 + -31932) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -31944) >>> 12][((r28 + -31944) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31936) >>> 12][((r28 + -31936) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3cab4; continue; - case 0x35710: + case 0x3cb10: f0 = f6; f1 = f7; - /* Next insn is delay slot */ - pc=0x35550; - run_35400(); return; - case 0x35800: - pc=0x35800; + /* Next insn is delay slot */ + pc = 0x3c950; + run_3c800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3cc00: + pc = 0x3cc00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_35800() throws ExecutionException { /* 0x35800 - 0x35a00 */ + + private final void run_3cc00() throws ExecutionException { /* 0x3cc00 - 0x3ce00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x35800: + for (;;) { + switch (pc) { + case 0x3cc00: r2 = f13; r3 = f12; r6 = 32752 << 16; r7 = r6 & r2; r4 = r2 + r0; r5 = r3 + r0; - if(r7 == r6) { - /* Next insn is delay slot */ - pc=0x35a88; - run_35a00(); return; + if (r7 == r6) { + /* Next insn is delay slot */ + pc = 0x3ce88; + run_3ce00(); + return; } - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x359dc; + if (r2 <= 0) { + /* Next insn is delay slot */ + pc = 0x3cddc; continue; } r2 = r2 >> 20; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x35a14; - run_35a00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3ce14; + run_3ce00(); + return; } r3 = 15 << 16; r3 = r3 | 65535; @@ -40073,12 +41050,12 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = 16 << 16; r4 = r4 | r3; r3 = r2 & 1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x359c4; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x3cdc4; continue; } - case 0x35858: + case 0x3cc58: r4 = r4 << 1; r14 = r2 >> 1; r2 = r5 >>> 31; @@ -40088,27 +41065,27 @@ public final class AcmeCrossAssembler extends UnixRuntime { r9 = r0 + r0; r5 = r0 + r0; r4 = 32 << 16; - case 0x3587c: + case 0x3cc7c: r7 = r5 + r4; r8 = r2 < r7 ? 1 : 0; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x35898; + if (r8 != r0) { + /* Next insn is delay slot */ + pc = 0x3cc98; continue; } r5 = r7 + r4; r2 = r2 - r7; r9 = r9 + r4; - case 0x35898: + case 0x3cc98: r7 = r3 >>> 31; r2 = r2 << 1; r6 = r6 + -1; r2 = r2 + r7; r3 = r3 << 1; r4 = r4 >>> 1; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x3587c; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x3cc7c; continue; } r7 = r0 + 32; @@ -40116,182 +41093,187 @@ public final class AcmeCrossAssembler extends UnixRuntime { r10 = r0 + r0; r4 = 32768 << 16; r12 = 32768 << 16; - case 0x358cc: + case 0x3cccc: r8 = r5 < r2 ? 1 : 0; r6 = r4 + r10; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x359a4; + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x3cda4; continue; } r8 = ((r3 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - case 0x358e0: + case 0x3cce0: r13 = r6 & r12; r10 = r6 + r4; - if(r13 == r12) { - /* Next insn is delay slot */ - pc=0x3598c; + if (r13 == r12) { + /* Next insn is delay slot */ + pc = 0x3cd8c; continue; } - case 0x358f0: + case 0x3ccf0: r13 = r5 + r0; - case 0x358f4: + case 0x3ccf4: r2 = r2 - r5; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x35904; + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x3cd04; continue; } r2 = r2 + -1; - case 0x35904: + case 0x3cd04: r3 = r3 - r6; r11 = r11 + r4; r5 = r13 + r0; - case 0x35910: + case 0x3cd10: r6 = r3 >>> 31; r2 = r2 << 1; r7 = r7 + -1; r2 = r2 + r6; r3 = r3 << 1; r4 = r4 >>> 1; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x358cc; + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x3cccc; continue; } r2 = r2 | r3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x35950; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3cd50; continue; } r2 = r0 + -1; - if(r11 == r2) { - /* Next insn is delay slot */ - pc=0x35aa4; - run_35a00(); return; + if (r11 == r2) { + /* Next insn is delay slot */ + pc = 0x3cea4; + run_3ce00(); + return; } r2 = r11 & 1; r11 = r2 + r11; - case 0x35950: + case 0x3cd50: r11 = r11 >>> 1; - case 0x35954: + case 0x3cd54: r4 = r9 >> 1; r2 = 16352 << 16; r9 = r9 & 1; r4 = r4 + r2; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x35974; + if (r9 == r0) { + /* Next insn is delay slot */ + pc = 0x3cd74; continue; } r2 = 32768 << 16; r11 = r11 | r2; - case 0x35974: + case 0x3cd74: r14 = r14 << 20; f0 = r11; r2 = r14 + r4; f1 = r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3598c: + case 0x3cd8c: r13 = r10 & r12; - if(r13 != r0) { - /* Next insn is delay slot */ - pc=0x358f0; + if (r13 != r0) { + /* Next insn is delay slot */ + pc = 0x3ccf0; continue; } r13 = r5 + 1; - /* Next insn is delay slot */ - pc=0x358f4; + /* Next insn is delay slot */ + pc = 0x3ccf4; continue; - case 0x359a4: - if(r2 != r5) { - /* Next insn is delay slot */ - pc=0x35910; + case 0x3cda4: + if (r2 != r5) { + /* Next insn is delay slot */ + pc = 0x3cd10; continue; } r8 = ((r3 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x358e0; + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x3cce0; continue; } r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x35910; + /* Next insn is delay slot */ + pc = 0x3cd10; continue; - case 0x359c4: + case 0x3cdc4: r3 = r5 >>> 31; r4 = r4 << 1; r4 = r4 + r3; r5 = r5 << 1; - /* Next insn is delay slot */ - pc=0x35858; + /* Next insn is delay slot */ + pc = 0x3cc58; continue; - case 0x359dc: + case 0x3cddc: r6 = 32767 << 16; r6 = r6 | 65535; r2 = r6 & r2; r2 = r2 | r3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x35a98; - run_35a00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3ce98; + run_3ce00(); + return; } - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x35ac8; - run_35a00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x3cec8; + run_3ce00(); + return; } r2 = r0 + r0; - case 0x35a00: - pc=0x35a00; + case 0x3ce00: + pc = 0x3ce00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_35a00() throws ExecutionException { /* 0x35a00 - 0x35c00 */ + + private final void run_3ce00() throws ExecutionException { /* 0x3ce00 - 0x3d000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x35a00: + for (;;) { + switch (pc) { + case 0x3ce00: r4 = r5 >>> 11; r2 = r2 + -21; r5 = r5 << 21; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x35a00; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3ce00; continue; } - case 0x35a14: + case 0x3ce14: r3 = 16 << 16; r3 = r4 & r3; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x35ab4; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x3ceb4; continue; } r7 = 16 << 16; - case 0x35a28: + case 0x3ce28: r4 = r4 << 1; r6 = r4 & r7; r3 = r3 + 1; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x35a28; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x3ce28; continue; } r7 = r0 + 1; r6 = r0 + 32; r7 = r7 - r3; r6 = r6 - r3; - case 0x35a4c: - r6 = r5 >>> (r6&0x1f); - r5 = r5 << (r3&0x1f); + case 0x3ce4c: + r6 = r5 >>> (r6 & 0x1f); + r5 = r5 << (r3 & 0x1f); r3 = 15 << 16; r3 = r3 | 65535; r2 = r2 + r7; @@ -40301,67 +41283,92 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = 16 << 16; r4 = r4 | r3; r3 = r2 & 1; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x35858; - run_35800(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x3cc58; + run_3cc00(); + return; } - /* Next insn is delay slot */ - pc=0x359c4; - run_35800(); return; - case 0x35a88: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = 0x3cdc4; + run_3cc00(); return; - case 0x35a98: + case 0x3ce88: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = r31; + return; + case 0x3ce98: f0 = f12; f1 = f13; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x35aa4: + case 0x3cea4: r9 = r9 + 1; r11 = r0 + r0; - /* Next insn is delay slot */ - pc=0x35954; - run_35800(); return; - case 0x35ab4: + /* Next insn is delay slot */ + pc = 0x3cd54; + run_3cc00(); + return; + case 0x3ceb4: r6 = r0 + 32; r7 = r0 + 1; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x35a4c; + /* Next insn is delay slot */ + pc = 0x3ce4c; continue; - case 0x35ac8: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))/(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=r31; + case 0x3cec8: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + / (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = r31; return; - case 0x35c00: - pc=0x35c00; + case 0x3d000: + pc = 0x3d000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_35c00() throws ExecutionException { /* 0x35c00 - 0x35e00 */ + + private final void run_3d000() throws ExecutionException { /* 0x3d000 - 0x3d200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x35c00: + for (;;) { + switch (pc) { + case 0x3d000: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; r2 = r3 & r2; r3 = 15936 << 16; r3 = r2 < r3 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x35d00; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x3d100; continue; } r4 = fcsr; @@ -40369,217 +41376,461 @@ public final class AcmeCrossAssembler extends UnixRuntime { r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f0 = (int)Math.floor((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f0 = (int)(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL))); break; // Round towards zero - case 2: f0 = (int)Math.ceil((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); break; // Round towards plus infinity - case 3: f0 = (int)Math.floor((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f0 = (int) (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))); + break; // Round towards zero + case 2: + f0 = (int) Math + .ceil((Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + break; // Round towards minus infinity } fcsr = r4; r2 = f0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x35e20; - run_35e00(); return; - } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f2 = readPages[(r28+-31420)>>>12][((r28+-31420)>>>2)&0x3ff]; - f4 = readPages[(r28+-31412)>>>12][((r28+-31412)>>>2)&0x3ff]; - f3 = readPages[(r28+-31424)>>>12][((r28+-31424)>>>2)&0x3ff]; - f5 = readPages[(r28+-31416)>>>12][((r28+-31416)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-31404)>>>12][((r28+-31404)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f5 = readPages[(r28+-31408)>>>12][((r28+-31408)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-31396)>>>12][((r28+-31396)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f5 = readPages[(r28+-31400)>>>12][((r28+-31400)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-31388)>>>12][((r28+-31388)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f5 = readPages[(r28+-31392)>>>12][((r28+-31392)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-31380)>>>12][((r28+-31380)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f5 = readPages[(r28+-31384)>>>12][((r28+-31384)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - case 0x35cc8: - f4 = readPages[(r28+-31372)>>>12][((r28+-31372)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - f5 = readPages[(r28+-31376)>>>12][((r28+-31376)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f12 = readPages[(r28+-31428)>>>12][((r28+-31428)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f13 = readPages[(r28+-31432)>>>12][((r28+-31432)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=r31; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3d220; + run_3d200(); + return; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f2 = readPages[(r28 + -31860) >>> 12][((r28 + -31860) >>> 2) & 0x3ff]; + f4 = readPages[(r28 + -31852) >>> 12][((r28 + -31852) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31864) >>> 12][((r28 + -31864) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -31856) >>> 12][((r28 + -31856) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -31844) >>> 12][((r28 + -31844) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f5 = readPages[(r28 + -31848) >>> 12][((r28 + -31848) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -31836) >>> 12][((r28 + -31836) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f5 = readPages[(r28 + -31840) >>> 12][((r28 + -31840) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -31828) >>> 12][((r28 + -31828) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f5 = readPages[(r28 + -31832) >>> 12][((r28 + -31832) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -31820) >>> 12][((r28 + -31820) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f5 = readPages[(r28 + -31824) >>> 12][((r28 + -31824) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + case 0x3d0c8: + f4 = readPages[(r28 + -31812) >>> 12][((r28 + -31812) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + f5 = readPages[(r28 + -31816) >>> 12][((r28 + -31816) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f12 = readPages[(r28 + -31868) >>> 12][((r28 + -31868) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f13 = readPages[(r28 + -31872) >>> 12][((r28 + -31872) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = r31; return; - case 0x35d00: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f2 = readPages[(r28+-31420)>>>12][((r28+-31420)>>>2)&0x3ff]; - f4 = readPages[(r28+-31412)>>>12][((r28+-31412)>>>2)&0x3ff]; - f3 = readPages[(r28+-31424)>>>12][((r28+-31424)>>>2)&0x3ff]; - f5 = readPages[(r28+-31416)>>>12][((r28+-31416)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + case 0x3d100: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f2 = readPages[(r28 + -31860) >>> 12][((r28 + -31860) >>> 2) & 0x3ff]; + f4 = readPages[(r28 + -31852) >>> 12][((r28 + -31852) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31864) >>> 12][((r28 + -31864) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -31856) >>> 12][((r28 + -31856) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r3 = 16339 << 16; r3 = r3 + 13107; - r3 = r2 < r3 ? 1 : 0; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-31404)>>>12][((r28+-31404)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f5 = readPages[(r28+-31408)>>>12][((r28+-31408)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-31396)>>>12][((r28+-31396)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f5 = readPages[(r28+-31400)>>>12][((r28+-31400)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-31388)>>>12][((r28+-31388)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f5 = readPages[(r28+-31392)>>>12][((r28+-31392)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f4 = readPages[(r28+-31380)>>>12][((r28+-31380)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f5 = readPages[(r28+-31384)>>>12][((r28+-31384)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x35cc8; + r3 = r2 < r3 ? 1 : 0; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -31844) >>> 12][((r28 + -31844) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f5 = readPages[(r28 + -31848) >>> 12][((r28 + -31848) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -31836) >>> 12][((r28 + -31836) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f5 = readPages[(r28 + -31840) >>> 12][((r28 + -31840) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -31828) >>> 12][((r28 + -31828) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f5 = readPages[(r28 + -31832) >>> 12][((r28 + -31832) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f4 = readPages[(r28 + -31820) >>> 12][((r28 + -31820) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f5 = readPages[(r28 + -31824) >>> 12][((r28 + -31824) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x3d0c8; continue; } r3 = 16361 << 16; r3 = r3 + 1; r3 = r2 < r3 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x35de4; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x3d1e4; continue; } - f6 = readPages[(r28+-31372)>>>12][((r28+-31372)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f7 = readPages[(r28+-31376)>>>12][((r28+-31376)>>>2)&0x3ff]; - r5 = r0 + r0; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } + f6 = readPages[(r28 + -31812) >>> 12][((r28 + -31812) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f7 = readPages[(r28 + -31816) >>> 12][((r28 + -31816) >>> 2) & 0x3ff]; + r5 = r0 + r0; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } r3 = 65504 << 16; f4 = r5; - f8 = readPages[(r28+-31428)>>>12][((r28+-31428)>>>2)&0x3ff]; + f8 = readPages[(r28 + -31868) >>> 12][((r28 + -31868) >>> 2) & 0x3ff]; r4 = r2 + r3; f5 = r4; - f9 = readPages[(r28+-31432)>>>12][((r28+-31432)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f15 = (int)(l >>> 32); f14 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=r31; + f9 = readPages[(r28 + -31872) >>> 12][((r28 + -31872) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f15 = (int) (l >>> 32); + f14 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = r31; return; - case 0x35de4: - f6 = readPages[(r28+-31372)>>>12][((r28+-31372)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f7 = readPages[(r28+-31376)>>>12][((r28+-31376)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f4 = readPages[(r28+-31436)>>>12][((r28+-31436)>>>2)&0x3ff]; - f8 = readPages[(r28+-31444)>>>12][((r28+-31444)>>>2)&0x3ff]; - case 0x35e00: - pc=0x35e00; + case 0x3d1e4: + f6 = readPages[(r28 + -31812) >>> 12][((r28 + -31812) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f7 = readPages[(r28 + -31816) >>> 12][((r28 + -31816) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f4 = readPages[(r28 + -31876) >>> 12][((r28 + -31876) >>> 2) & 0x3ff]; + f8 = readPages[(r28 + -31884) >>> 12][((r28 + -31884) >>> 2) & 0x3ff]; + case 0x3d200: + pc = 0x3d200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_35e00() throws ExecutionException { /* 0x35e00 - 0x36000 */ + + private final void run_3d200() throws ExecutionException { /* 0x3d200 - 0x3d400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x35e00: - f5 = readPages[(r28+-31440)>>>12][((r28+-31440)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f15 = (int)(l >>> 32); f14 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f9 = readPages[(r28+-31448)>>>12][((r28+-31448)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x3d200: + f5 = readPages[(r28 + -31880) >>> 12][((r28 + -31880) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f15 = (int) (l >>> 32); + f14 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f9 = readPages[(r28 + -31888) >>> 12][((r28 + -31888) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = r31; return; - case 0x35e20: - f0 = readPages[(r28+-31428)>>>12][((r28+-31428)>>>2)&0x3ff]; - f1 = readPages[(r28+-31432)>>>12][((r28+-31432)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r31; + case 0x3d220: + f0 = readPages[(r28 + -31868) >>> 12][((r28 + -31868) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -31872) >>> 12][((r28 + -31872) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r31; return; - case 0x36000: - pc=0x36000; + case 0x3d400: + pc = 0x3d400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_36000() throws ExecutionException { /* 0x36000 - 0x36200 */ + + private final void run_3d400() throws ExecutionException { /* 0x3d400 - 0x3d600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x36000: + for (;;) { + switch (pc) { + case 0x3d400: r29 = r29 + -688; - r2 = readPages[(r29+704)>>>12][((r29+704)>>>2)&0x3ff]; + r2 = readPages[(r29 + 704) >>> 12][((r29 + 704) >>> 2) & 0x3ff]; r9 = r6 + -3; r3 = r2 << 2; - r2 = 7 << 16; - r2 = r2 + 176; + r2 = 6 << 16; + r2 = r2 + -27920; r2 = r3 + r2; - writePages[(r29+608)>>>12][((r29+608)>>>2)&0x3ff] = r18; - r18 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; + writePages[(r29 + 608) >>> 12][((r29 + 608) >>> 2) & 0x3ff] = r18; + r18 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; r2 = r0 + 24; - if(r2 != r0) { - /* Next insn is delay slot */ - hi = r9%r2; lo = r9/r2; - pc=0x36034; + if (r2 != r0) { + /* Next insn is delay slot */ + hi = r9 % r2; + lo = r9 / r2; + pc = 0x3d434; continue; } - hi = r9%r2; lo = r9/r2; + hi = r9 % r2; + lo = r9 / r2; throw new ExecutionException("Break"); - case 0x36034: - writePages[(r29+628)>>>12][((r29+628)>>>2)&0x3ff] = r23; - writePages[(r29+612)>>>12][((r29+612)>>>2)&0x3ff] = r19; - writePages[(r29+604)>>>12][((r29+604)>>>2)&0x3ff] = r17; - writePages[(r29+636)>>>12][((r29+636)>>>2)&0x3ff] = r31; - writePages[(r29+632)>>>12][((r29+632)>>>2)&0x3ff] = r30; - writePages[(r29+624)>>>12][((r29+624)>>>2)&0x3ff] = r22; - writePages[(r29+620)>>>12][((r29+620)>>>2)&0x3ff] = r21; - writePages[(r29+616)>>>12][((r29+616)>>>2)&0x3ff] = r20; - writePages[(r29+600)>>>12][((r29+600)>>>2)&0x3ff] = r16; - writePages[(r29+684)>>>12][((r29+684)>>>2)&0x3ff] = f30; - writePages[(r29+680)>>>12][((r29+680)>>>2)&0x3ff] = f31; - writePages[(r29+676)>>>12][((r29+676)>>>2)&0x3ff] = f28; - writePages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff] = f29; - writePages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff] = f26; - writePages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff] = f27; - writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = f24; - writePages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff] = f25; - writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = f22; - writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = f23; - writePages[(r29+644)>>>12][((r29+644)>>>2)&0x3ff] = f20; - writePages[(r29+640)>>>12][((r29+640)>>>2)&0x3ff] = f21; + case 0x3d434: + writePages[(r29 + 628) >>> 12][((r29 + 628) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 612) >>> 12][((r29 + 612) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 604) >>> 12][((r29 + 604) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 636) >>> 12][((r29 + 636) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 632) >>> 12][((r29 + 632) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 624) >>> 12][((r29 + 624) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 620) >>> 12][((r29 + 620) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 616) >>> 12][((r29 + 616) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 600) >>> 12][((r29 + 600) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 684) >>> 12][((r29 + 684) >>> 2) & 0x3ff] = f30; + writePages[(r29 + 680) >>> 12][((r29 + 680) >>> 2) & 0x3ff] = f31; + writePages[(r29 + 676) >>> 12][((r29 + 676) >>> 2) & 0x3ff] = f28; + writePages[(r29 + 672) >>> 12][((r29 + 672) >>> 2) & 0x3ff] = f29; + writePages[(r29 + 668) >>> 12][((r29 + 668) >>> 2) & 0x3ff] = f26; + writePages[(r29 + 664) >>> 12][((r29 + 664) >>> 2) & 0x3ff] = f27; + writePages[(r29 + 660) >>> 12][((r29 + 660) >>> 2) & 0x3ff] = f24; + writePages[(r29 + 656) >>> 12][((r29 + 656) >>> 2) & 0x3ff] = f25; + writePages[(r29 + 652) >>> 12][((r29 + 652) >>> 2) & 0x3ff] = f22; + writePages[(r29 + 648) >>> 12][((r29 + 648) >>> 2) & 0x3ff] = f23; + writePages[(r29 + 644) >>> 12][((r29 + 644) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 640) >>> 12][((r29 + 640) >>> 2) & 0x3ff] = f21; r17 = r4 + r0; r23 = r5 + r0; r19 = r7 + -1; r9 = lo; - if(r9 < 0) { - /* Next insn is delay slot */ - pc=0x36c60; - run_36c00(); return; + if (r9 < 0) { + /* Next insn is delay slot */ + pc = 0x3e060; + run_3e000(); + return; } - case 0x360a0: + case 0x3d4a0: r2 = ~(r0 | r9); r3 = r2 << 3; r2 = r2 << 5; @@ -40587,41 +41838,46 @@ public final class AcmeCrossAssembler extends UnixRuntime { r5 = r19 + r18; r30 = r30 + r6; r2 = r9 - r19; - if(r5 < 0) { - /* Next insn is delay slot */ - pc=0x3610c; + if (r5 < 0) { + /* Next insn is delay slot */ + pc = 0x3d50c; continue; } - r6 = readPages[(r29+708)>>>12][((r29+708)>>>2)&0x3ff]; + r6 = readPages[(r29 + 708) >>> 12][((r29 + 708) >>> 2) & 0x3ff]; r4 = r2 << 2; r5 = r2 + r5; r3 = r29 + 336; r4 = r6 + r4; r5 = r5 + 1; - case 0x360dc: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x368a8; - run_36800(); return; + case 0x3d4dc: + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x3dca8; + run_3dc00(); + return; } - f2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - case 0x360f0: + f2 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits(((double) f2)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + case 0x3d4f0: r2 = r2 + 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = f0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = f1; + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = f0; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = f1; r4 = r4 + 4; r3 = r3 + 8; - if(r2 != r5) { - /* Next insn is delay slot */ - pc=0x360dc; + if (r2 != r5) { + /* Next insn is delay slot */ + pc = 0x3d4dc; continue; } - case 0x3610c: - if(r18 < 0) { - /* Next insn is delay slot */ - pc=0x36d44; - run_36c00(); return; + case 0x3d50c: + if (r18 < 0) { + /* Next insn is delay slot */ + pc = 0x3e144; + run_3e000(); + return; } r16 = r7 << 3; r8 = r18 + 1; @@ -40630,93 +41886,112 @@ public final class AcmeCrossAssembler extends UnixRuntime { r5 = r0 + r0; r21 = r29 + 16; r6 = r6 + 328; - case 0x36130: - if(r19 < 0) { - /* Next insn is delay slot */ - pc=0x36938; - run_36800(); return; + case 0x3d530: + if (r19 < 0) { + /* Next insn is delay slot */ + pc = 0x3dd38; + run_3dc00(); + return; } f0 = r0; r3 = r6 + r5; f1 = r0; r2 = r0 + r0; - case 0x36148: + case 0x3d548: r4 = r17 + r2; - f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - f4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - f5 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r2 = r2 + 8; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - r3 = r3 + -8; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x36148; + f2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + f4 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + f3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + f5 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r2 = r2 + 8; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + r3 = r3 + -8; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + if (r2 != r16) { + /* Next insn is delay slot */ + pc = 0x3d548; continue; } r2 = r21 + r5; r5 = r5 + 8; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = f0; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = f1; - if(r5 != r8) { - /* Next insn is delay slot */ - pc=0x36130; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = f0; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = f1; + if (r5 != r8) { + /* Next insn is delay slot */ + pc = 0x3d530; continue; } - case 0x3618c: + case 0x3d58c: r2 = r29 + 492; r20 = r18 << 2; - writePages[(r29+576)>>>12][((r29+576)>>>2)&0x3ff] = r2; + writePages[(r29 + 576) >>> 12][((r29 + 576) >>> 2) & 0x3ff] = r2; r20 = r2 + r20; r2 = r18 + -1; r2 = r2 << 2; r2 = r21 + r2; - f28 = readPages[(r28+-31348)>>>12][((r28+-31348)>>>2)&0x3ff]; - f30 = readPages[(r28+-31340)>>>12][((r28+-31340)>>>2)&0x3ff]; - f20 = readPages[(r28+-31324)>>>12][((r28+-31324)>>>2)&0x3ff]; - f24 = readPages[(r28+-31364)>>>12][((r28+-31364)>>>2)&0x3ff]; - f22 = readPages[(r28+-31356)>>>12][((r28+-31356)>>>2)&0x3ff]; - writePages[(r29+584)>>>12][((r29+584)>>>2)&0x3ff] = r2; + f28 = readPages[(r28 + -31788) >>> 12][((r28 + -31788) >>> 2) & 0x3ff]; + f30 = readPages[(r28 + -31780) >>> 12][((r28 + -31780) >>> 2) & 0x3ff]; + f20 = readPages[(r28 + -31764) >>> 12][((r28 + -31764) >>> 2) & 0x3ff]; + f24 = readPages[(r28 + -31804) >>> 12][((r28 + -31804) >>> 2) & 0x3ff]; + f22 = readPages[(r28 + -31796) >>> 12][((r28 + -31796) >>> 2) & 0x3ff]; + writePages[(r29 + 584) >>> 12][((r29 + 584) >>> 2) & 0x3ff] = r2; r2 = r18 + -2; r2 = r2 << 2; - f29 = readPages[(r28+-31352)>>>12][((r28+-31352)>>>2)&0x3ff]; - f31 = readPages[(r28+-31344)>>>12][((r28+-31344)>>>2)&0x3ff]; - f21 = readPages[(r28+-31328)>>>12][((r28+-31328)>>>2)&0x3ff]; - f25 = readPages[(r28+-31368)>>>12][((r28+-31368)>>>2)&0x3ff]; - f23 = readPages[(r28+-31360)>>>12][((r28+-31360)>>>2)&0x3ff]; + f29 = readPages[(r28 + -31792) >>> 12][((r28 + -31792) >>> 2) & 0x3ff]; + f31 = readPages[(r28 + -31784) >>> 12][((r28 + -31784) >>> 2) & 0x3ff]; + f21 = readPages[(r28 + -31768) >>> 12][((r28 + -31768) >>> 2) & 0x3ff]; + f25 = readPages[(r28 + -31808) >>> 12][((r28 + -31808) >>> 2) & 0x3ff]; + f23 = readPages[(r28 + -31800) >>> 12][((r28 + -31800) >>> 2) & 0x3ff]; r22 = r18 + r0; r8 = r18 << 3; - writePages[(r29+588)>>>12][((r29+588)>>>2)&0x3ff] = r2; - case 0x361e8: + writePages[(r29 + 588) >>> 12][((r29 + 588) >>> 2) & 0x3ff] = r2; + case 0x3d5e8: r8 = r21 + r8; - f12 = readPages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff]; - f13 = readPages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff]; - if(r22 <= 0) { - /* Next insn is delay slot */ - pc=0x36298; - run_36200(); return; + f12 = readPages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff]; + f13 = readPages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff]; + if (r22 <= 0) { + /* Next insn is delay slot */ + pc = 0x3d698; + run_3d600(); + return; } - case 0x36200: - pc=0x36200; + case 0x3d600: + pc = 0x3d600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_36200() throws ExecutionException { /* 0x36200 - 0x36400 */ + + private final void run_3d600() throws ExecutionException { /* 0x3d600 - 0x3d800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x36200: + for (;;) { + switch (pc) { + case 0x3d600: r2 = r22 + -1; r2 = r2 << 3; r3 = r29 + 496; r2 = r21 + r2; r4 = r29 + 8; - case 0x36214: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f25&0xffffffffL) << 32) | (f24&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + case 0x3d614: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f25 & 0xffffffffL) << 32) | (f24 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r2 = r2 + -8; r3 = r3 + 4; r6 = fcsr; @@ -40724,107 +41999,186 @@ public final class AcmeCrossAssembler extends UnixRuntime { r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f0 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f0 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f0 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f0 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f0 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f0 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f0 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity } - fcsr = r6; - { long l = Double.doubleToLongBits(((double)f0)); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } + fcsr = r6; { + long l = Double.doubleToLongBits(((double) f0)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f23 & 0xffffffffL) << 32) | (f22 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + break; // Round towards minus infinity } fcsr = r6; - f12 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = f2; - f13 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } - if(r2 != r4) { - /* Next insn is delay slot */ - pc=0x36214; + f12 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + writePages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff] = f2; + f13 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } + if (r2 != r4) { + /* Next insn is delay slot */ + pc = 0x3d614; continue; } - case 0x36298: + case 0x3d698: r6 = r30 + r0; - writePages[(r29+592)>>>12][((r29+592)>>>2)&0x3ff] = r9; - /* Next insn is delay slot */ - r31=0x362a8; - pc=0x38400; - run_38400(); return; - case 0x362a8: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } + writePages[(r29 + 592) >>> 12][((r29 + 592) >>> 2) & 0x3ff] = r9; + /* Next insn is delay slot */ + r31 = 0x3d6a8; + pc = 0x3f800; + run_3f800(); + return; + case 0x3d6a8: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f29 & 0xffffffffL) << 32) | (f28 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } f26 = f0; f27 = f1; - /* Next insn is delay slot */ - r31=0x362b8; - pc=0x37600; - run_37600(); return; - case 0x362b8: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f31&0xffffffffL) << 32) | (f30&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r9 = readPages[(r29+592)>>>12][((r29+592)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } + /* Next insn is delay slot */ + r31 = 0x3d6b8; + pc = 0x3ea00; + run_3ea00(); + return; + case 0x3d6b8: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f31 & 0xffffffffL) << 32) | (f30 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r9 = readPages[(r29 + 592) >>> 12][((r29 + 592) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f27 = (int) (l >>> 32); + f26 = (int) l; + } r2 = fcsr; r2 = fcsr; r1 = r2 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f0 = (int)Math.floor((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f0 = (int)(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL))); break; // Round towards zero - case 2: f0 = (int)Math.ceil((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))); break; // Round towards plus infinity - case 3: f0 = (int)Math.floor((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f0 = (int) (Double.longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL))); + break; // Round towards zero + case 2: + f0 = (int) Math + .ceil((Double.longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL)))); + break; // Round towards minus infinity } fcsr = r2; - writePages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff] = f0; - { long l = Double.doubleToLongBits(((double)f0)); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } - if(r30 <= 0) { - /* Next insn is delay slot */ - pc=0x368bc; - run_36800(); return; + writePages[(r29 + 580) >>> 12][((r29 + 580) >>> 2) & 0x3ff] = f0; { + long l = Double.doubleToLongBits(((double) f0)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f27 = (int) (l >>> 32); + f26 = (int) l; + } + if (r30 <= 0) { + /* Next insn is delay slot */ + pc = 0x3dcbc; + run_3dc00(); + return; } r3 = r22 + -1; r3 = r3 << 2; r3 = r21 + r3; - r2 = readPages[(r3+480)>>>12][((r3+480)>>>2)&0x3ff]; + r2 = readPages[(r3 + 480) >>> 12][((r3 + 480) >>> 2) & 0x3ff]; r4 = r0 + 24; r4 = r4 - r30; - r5 = r2 >> (r4&0x1f); - r7 = readPages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff]; - r4 = r5 << (r4&0x1f); + r5 = r2 >> (r4 & 0x1f); + r7 = readPages[(r29 + 580) >>> 12][((r29 + 580) >>> 2) & 0x3ff]; + r4 = r5 << (r4 & 0x1f); r2 = r2 - r4; r4 = r0 + 23; r7 = r7 + r5; r4 = r4 - r30; - writePages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff] = r7; - writePages[(r3+480)>>>12][((r3+480)>>>2)&0x3ff] = r2; - r4 = r2 >> (r4&0x1f); - case 0x36340: - if(r4 <= 0) { - /* Next insn is delay slot */ - pc=0x36414; - run_36400(); return; + writePages[(r29 + 580) >>> 12][((r29 + 580) >>> 2) & 0x3ff] = r7; + writePages[(r3 + 480) >>> 12][((r3 + 480) >>> 2) & 0x3ff] = r2; + r4 = r2 >> (r4 & 0x1f); + case 0x3d740: + if (r4 <= 0) { + /* Next insn is delay slot */ + pc = 0x3d814; + run_3d800(); + return; } - r2 = readPages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff]; + r2 = readPages[(r29 + 580) >>> 12][((r29 + 580) >>> 2) & 0x3ff]; r2 = r2 + 1; - writePages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff] = r2; - if(r22 <= 0) { - /* Next insn is delay slot */ - pc=0x36978; - run_36800(); return; + writePages[(r29 + 580) >>> 12][((r29 + 580) >>> 2) & 0x3ff] = r2; + if (r22 <= 0) { + /* Next insn is delay slot */ + pc = 0x3dd78; + run_3dc00(); + return; } - case 0x36360: + case 0x3d760: r2 = r29 + 496; r6 = r22 << 2; r7 = 255 << 16; @@ -40832,444 +42186,563 @@ public final class AcmeCrossAssembler extends UnixRuntime { r5 = r0 + r0; r7 = r7 | 65535; r8 = 256 << 16; - /* Next insn is delay slot */ - pc=0x363a4; + /* Next insn is delay slot */ + pc = 0x3d7a4; continue; - case 0x36384: - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x36398; + case 0x3d784: + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x3d798; continue; } r3 = r8 - r3; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; r5 = r0 + 1; - case 0x36398: + case 0x3d798: r2 = r2 + 4; - if(r2 == r6) { - /* Next insn is delay slot */ - pc=0x363c8; + if (r2 == r6) { + /* Next insn is delay slot */ + pc = 0x3d7c8; continue; } - case 0x363a4: - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x36384; + case 0x3d7a4: + r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x3d784; continue; } r3 = r7 - r3; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; r2 = r2 + 4; r5 = r0 + 1; - if(r2 != r6) { - /* Next insn is delay slot */ - pc=0x363a4; + if (r2 != r6) { + /* Next insn is delay slot */ + pc = 0x3d7a4; continue; } - case 0x363c8: - if(r30 <= 0) { - /* Next insn is delay slot */ - pc=0x36408; - run_36400(); return; + case 0x3d7c8: + if (r30 <= 0) { + /* Next insn is delay slot */ + pc = 0x3d808; + run_3d800(); + return; } r2 = r0 + 1; - if(r30 == r2) { - /* Next insn is delay slot */ - pc=0x368e4; - run_36800(); return; + if (r30 == r2) { + /* Next insn is delay slot */ + pc = 0x3dce4; + run_3dc00(); + return; } r2 = r0 + 2; - if(r30 != r2) { - /* Next insn is delay slot */ - pc=0x36408; - run_36400(); return; + if (r30 != r2) { + /* Next insn is delay slot */ + pc = 0x3d808; + run_3d800(); + return; } r2 = r22 + -1; r2 = r2 << 2; r2 = r21 + r2; - r6 = readPages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff]; + r6 = readPages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff]; r3 = 63 << 16; r3 = r3 | 65535; - case 0x36400: - pc=0x36400; + case 0x3d800: + pc = 0x3d800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_36400() throws ExecutionException { /* 0x36400 - 0x36600 */ + + private final void run_3d800() throws ExecutionException { /* 0x3d800 - 0x3da00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x36400: + for (;;) { + switch (pc) { + case 0x3d800: r3 = r6 & r3; - writePages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff] = r3; - case 0x36408: + writePages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff] = r3; + case 0x3d808: r2 = r0 + 2; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x365b0; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x3d9b0; continue; } - case 0x36414: + case 0x3d814: f0 = r0; f1 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x365f8; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3d9f8; continue; } - case 0x36434: + case 0x3d834: r5 = r22 + -1; r2 = r5 < r18 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x36470; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3d870; continue; } r3 = r29 + 496; r7 = r5 << 2; r2 = r3 + r7; r3 = r0 + r0; - case 0x36454: - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; + case 0x3d854: + r6 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; r2 = r2 + -4; r3 = r3 | r6; - if(r2 != r20) { - /* Next insn is delay slot */ - pc=0x36454; + if (r2 != r20) { + /* Next insn is delay slot */ + pc = 0x3d854; continue; } - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x36c10; - run_36c00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x3e010; + run_3e000(); + return; } - case 0x36470: - r4 = readPages[(r29+584)>>>12][((r29+584)>>>2)&0x3ff]; - r2 = readPages[(r4+480)>>>12][((r4+480)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x36c04; - run_36c00(); return; + case 0x3d870: + r4 = readPages[(r29 + 584) >>> 12][((r29 + 584) >>> 2) & 0x3ff]; + r2 = readPages[(r4 + 480) >>> 12][((r4 + 480) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3e004; + run_3e000(); + return; } - r7 = readPages[(r29+588)>>>12][((r29+588)>>>2)&0x3ff]; + r7 = readPages[(r29 + 588) >>> 12][((r29 + 588) >>> 2) & 0x3ff]; r5 = r29 + 496; r2 = r5 + r7; r3 = r0 + 1; - case 0x36498: + case 0x3d898: r2 = r2 + -4; - r4 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; + r4 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; r3 = r3 + 1; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x36498; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3d898; continue; } - case 0x364ac: + case 0x3d8ac: r2 = r22 + 1; r22 = r22 + r3; r3 = r22 < r2 ? 1 : 0; r8 = r22 << 3; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x361e8; - run_36000(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x3d5e8; + run_3d400(); + return; } r5 = r2 + r9; - r3 = readPages[(r29+708)>>>12][((r29+708)>>>2)&0x3ff]; + r3 = readPages[(r29 + 708) >>> 12][((r29 + 708) >>> 2) & 0x3ff]; r5 = r5 << 2; r5 = r3 + r5; r7 = r19 + r2; - f2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; + f2 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; r4 = r29 + 336; r2 = r2 << 3; r7 = r7 << 3; - r7 = r4 + r7; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } + r7 = r4 + r7; { + long l = Double.doubleToLongBits(((double) f2)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r4 = r21 + r2; r8 = r22 << 3; r2 = r29 + 24; r6 = r2 + r8; - writePages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff] = f0; - writePages[(r7+0)>>>12][((r7+0)>>>2)&0x3ff] = f1; - if(r19 < 0) { - /* Next insn is delay slot */ - pc=0x36584; + writePages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff] = f0; + writePages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff] = f1; + if (r19 < 0) { + /* Next insn is delay slot */ + pc = 0x3d984; continue; } - case 0x36510: + case 0x3d910: f0 = r0; r3 = r7 + r0; f1 = r0; r2 = r0 + r0; - case 0x36520: + case 0x3d920: r10 = r17 + r2; - f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - f4 = readPages[(r10+4)>>>12][((r10+4)>>>2)&0x3ff]; - f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - f5 = readPages[(r10+0)>>>12][((r10+0)>>>2)&0x3ff]; - r2 = r2 + 8; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - r3 = r3 + -8; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x36520; + f2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + f4 = readPages[(r10 + 4) >>> 12][((r10 + 4) >>> 2) & 0x3ff]; + f3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + f5 = readPages[(r10 + 0) >>> 12][((r10 + 0) >>> 2) & 0x3ff]; + r2 = r2 + 8; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + r3 = r3 + -8; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + if (r2 != r16) { + /* Next insn is delay slot */ + pc = 0x3d920; continue; } - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = f0; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = f1; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = f0; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = f1; r4 = r4 + 8; r5 = r5 + 4; r7 = r7 + 8; - if(r4 == r6) { - /* Next insn is delay slot */ - pc=0x361e8; - run_36000(); return; + if (r4 == r6) { + /* Next insn is delay slot */ + pc = 0x3d5e8; + run_3d400(); + return; } - case 0x36568: - f2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff] = f0; - writePages[(r7+0)>>>12][((r7+0)>>>2)&0x3ff] = f1; - if(r19 >= 0) { - /* Next insn is delay slot */ - pc=0x36510; + case 0x3d968: + f2 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits(((double) f2)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff] = f0; + writePages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff] = f1; + if (r19 >= 0) { + /* Next insn is delay slot */ + pc = 0x3d910; continue; } - case 0x36584: + case 0x3d984: f0 = r0; r4 = r4 + 8; f1 = r0; r5 = r5 + 4; - writePages[(r4+-4)>>>12][((r4+-4)>>>2)&0x3ff] = f0; - writePages[(r4+-8)>>>12][((r4+-8)>>>2)&0x3ff] = f1; + writePages[(r4 + -4) >>> 12][((r4 + -4) >>> 2) & 0x3ff] = f0; + writePages[(r4 + -8) >>> 12][((r4 + -8) >>> 2) & 0x3ff] = f1; r7 = r7 + 8; - if(r4 != r6) { - /* Next insn is delay slot */ - pc=0x36568; + if (r4 != r6) { + /* Next insn is delay slot */ + pc = 0x3d968; continue; } - /* Next insn is delay slot */ - pc=0x361e8; - run_36000(); return; - case 0x365b0: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))-(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x36414; + /* Next insn is delay slot */ + pc = 0x3d5e8; + run_3d400(); + return; + case 0x3d9b0: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) + - (Double.longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL)))); + f27 = (int) (l >>> 32); + f26 = (int) l; + } + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x3d814; continue; } f12 = f20; f13 = f21; r6 = r30 + r0; - writePages[(r29+596)>>>12][((r29+596)>>>2)&0x3ff] = r4; - writePages[(r29+592)>>>12][((r29+592)>>>2)&0x3ff] = r9; - /* Next insn is delay slot */ - r31=0x365d4; - pc=0x38400; - run_38400(); return; - case 0x365d4: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f27 = (int)(l >>> 32); f26 = (int)l; } + writePages[(r29 + 596) >>> 12][((r29 + 596) >>> 2) & 0x3ff] = r4; + writePages[(r29 + 592) >>> 12][((r29 + 592) >>> 2) & 0x3ff] = r9; + /* Next insn is delay slot */ + r31 = 0x3d9d4; + pc = 0x3f800; + run_3f800(); + return; + case 0x3d9d4: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f27 = (int) (l >>> 32); + f26 = (int) l; + } f0 = r0; - r9 = readPages[(r29+592)>>>12][((r29+592)>>>2)&0x3ff]; + r9 = readPages[(r29 + 592) >>> 12][((r29 + 592) >>> 2) & 0x3ff]; f1 = r0; - r4 = readPages[(r29+596)>>>12][((r29+596)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x36434; + r4 = readPages[(r29 + 596) >>> 12][((r29 + 596) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x3d834; continue; } - case 0x365f8: + case 0x3d9f8: f12 = f26; f13 = f27; r6 = r0 - r30; - case 0x36600: - pc=0x36600; + case 0x3da00: + pc = 0x3da00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_36600() throws ExecutionException { /* 0x36600 - 0x36800 */ + + private final void run_3da00() throws ExecutionException { /* 0x3da00 - 0x3dc00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x36600: - writePages[(r29+596)>>>12][((r29+596)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - r31=0x3660c; - pc=0x38400; - run_38400(); return; - case 0x3660c: - f2 = readPages[(r28+-31356)>>>12][((r28+-31356)>>>2)&0x3ff]; - r4 = readPages[(r29+596)>>>12][((r29+596)>>>2)&0x3ff]; - f3 = readPages[(r28+-31360)>>>12][((r28+-31360)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<=(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x36c6c; - run_36c00(); return; + for (;;) { + switch (pc) { + case 0x3da00: + writePages[(r29 + 596) >>> 12][((r29 + 596) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + r31 = 0x3da0c; + pc = 0x3f800; + run_3f800(); + return; + case 0x3da0c: + f2 = readPages[(r28 + -31796) >>> 12][((r28 + -31796) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 596) >>> 12][((r29 + 596) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31800) >>> 12][((r28 + -31800) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) <= (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3e06c; + run_3e000(); + return; } - f4 = readPages[(r28+-31364)>>>12][((r28+-31364)>>>2)&0x3ff]; + f4 = readPages[(r28 + -31804) >>> 12][((r28 + -31804) >>> 2) & 0x3ff]; r5 = r22 + 1; - f5 = readPages[(r28+-31368)>>>12][((r28+-31368)>>>2)&0x3ff]; - r30 = r30 + 24; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + f5 = readPages[(r28 + -31808) >>> 12][((r28 + -31808) >>> 2) & 0x3ff]; + r30 = r30 + 24; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } r2 = fcsr; r2 = fcsr; r1 = r2 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f4 = (int)Math.floor((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f4 = (int)(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL))); break; // Round towards zero - case 2: f4 = (int)Math.ceil((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); break; // Round towards plus infinity - case 3: f4 = (int)Math.floor((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f4 = (int) Math.floor( + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f4 = (int) (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))); + break; // Round towards zero + case 2: + f4 = (int) Math + .ceil((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f4 = (int) Math + .floor((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + break; // Round towards minus infinity } - fcsr = r2; - { long l = Double.doubleToLongBits(((double)f4)); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + fcsr = r2; { + long l = Double.doubleToLongBits(((double) f4)); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r2 = r22 << 2; - r2 = r21 + r2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + r2 = r21 + r2; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity } fcsr = r6; - writePages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff] = f2; + writePages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff] = f2; r2 = r5 << 2; r2 = r21 + r2; - writePages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff] = f4; - case 0x366b4: + writePages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff] = f4; + case 0x3dab4: f12 = f20; f13 = f21; r6 = r30 + r0; - writePages[(r29+596)>>>12][((r29+596)>>>2)&0x3ff] = r4; - writePages[(r29+592)>>>12][((r29+592)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - r31=0x366cc; - pc=0x38400; - run_38400(); return; - case 0x366cc: - r5 = readPages[(r29+592)>>>12][((r29+592)>>>2)&0x3ff]; - r4 = readPages[(r29+596)>>>12][((r29+596)>>>2)&0x3ff]; - if(r5 < 0) { - /* Next insn is delay slot */ - pc=0x367b4; + writePages[(r29 + 596) >>> 12][((r29 + 596) >>> 2) & 0x3ff] = r4; + writePages[(r29 + 592) >>> 12][((r29 + 592) >>> 2) & 0x3ff] = r5; + /* Next insn is delay slot */ + r31 = 0x3dacc; + pc = 0x3f800; + run_3f800(); + return; + case 0x3dacc: + r5 = readPages[(r29 + 592) >>> 12][((r29 + 592) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 596) >>> 12][((r29 + 596) >>> 2) & 0x3ff]; + if (r5 < 0) { + /* Next insn is delay slot */ + pc = 0x3dbb4; continue; } - f4 = readPages[(r28+-31364)>>>12][((r28+-31364)>>>2)&0x3ff]; + f4 = readPages[(r28 + -31804) >>> 12][((r28 + -31804) >>> 2) & 0x3ff]; r3 = r29 + 496; r2 = r5 << 2; r9 = r5 << 3; - f5 = readPages[(r28+-31368)>>>12][((r28+-31368)>>>2)&0x3ff]; + f5 = readPages[(r28 + -31808) >>> 12][((r28 + -31808) >>> 2) & 0x3ff]; r2 = r3 + r2; r3 = r21 + r9; - case 0x366f8: - f6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r7 = readPages[(r29+576)>>>12][((r29+576)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits(((double)f6)); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - r2 = r2 + -4; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + case 0x3daf8: + f6 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r7 = readPages[(r29 + 576) >>> 12][((r29 + 576) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits(((double) f6)); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + r2 = r2 + -4; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r3 = r3 + -8; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f2; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f3; - if(r2 != r7) { - /* Next insn is delay slot */ - pc=0x366f8; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = f2; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = f3; + if (r2 != r7) { + /* Next insn is delay slot */ + pc = 0x3daf8; continue; } r9 = r21 + r9; r11 = r5 + 1; r8 = r0 + r0; - r10 = 7 << 16; - case 0x36734: - if(r18 < 0) { - /* Next insn is delay slot */ - pc=0x36984; - run_36800(); return; + r10 = 6 << 16; + case 0x3db34: + if (r18 < 0) { + /* Next insn is delay slot */ + pc = 0x3dd84; + run_3dc00(); + return; } f0 = r0; - r6 = r10 + 112; + r6 = r10 + -27984; r3 = r9 + r0; f1 = r0; r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3676c; + /* Next insn is delay slot */ + pc = 0x3db6c; continue; - case 0x36758: + case 0x3db58: r7 = r8 < r2 ? 1 : 0; r6 = r6 + 8; r3 = r3 + 8; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x36794; + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x3db94; continue; } - case 0x3676c: - f4 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; - f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - f5 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r2 = r2 + 1; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - r7 = r18 < r2 ? 1 : 0; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x36758; + case 0x3db6c: + f4 = readPages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff]; + f2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + f5 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + f3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r2 = r2 + 1; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + r7 = r18 < r2 ? 1 : 0; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x3db58; continue; } - case 0x36794: + case 0x3db94: r2 = r8 << 3; r2 = r21 + r2; r8 = r8 + 1; - writePages[(r2+164)>>>12][((r2+164)>>>2)&0x3ff] = f0; - writePages[(r2+160)>>>12][((r2+160)>>>2)&0x3ff] = f1; + writePages[(r2 + 164) >>> 12][((r2 + 164) >>> 2) & 0x3ff] = f0; + writePages[(r2 + 160) >>> 12][((r2 + 160) >>> 2) & 0x3ff] = f1; r9 = r9 + -8; - if(r8 != r11) { - /* Next insn is delay slot */ - pc=0x36734; + if (r8 != r11) { + /* Next insn is delay slot */ + pc = 0x3db34; continue; } - case 0x367b4: - r3 = readPages[(r29+704)>>>12][((r29+704)>>>2)&0x3ff]; + case 0x3dbb4: + r3 = readPages[(r29 + 704) >>> 12][((r29 + 704) >>> 2) & 0x3ff]; r2 = r3 < 3 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x36a94; - run_36a00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3de94; + run_3de00(); + return; } - if(r3 > 0) { - /* Next insn is delay slot */ - pc=0x369b4; - run_36800(); return; + if (r3 > 0) { + /* Next insn is delay slot */ + pc = 0x3ddb4; + run_3dc00(); + return; } - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3683c; - run_36800(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x3dc3c; + run_3dc00(); + return; } - if(r5 < 0) { - /* Next insn is delay slot */ - pc=0x36d34; - run_36c00(); return; + if (r5 < 0) { + /* Next insn is delay slot */ + pc = 0x3e134; + run_3e000(); + return; } r2 = r29 + 176; r5 = r5 << 3; @@ -41277,170 +42750,193 @@ public final class AcmeCrossAssembler extends UnixRuntime { r6 = r29 + 168; r3 = r0 + r0; r2 = r0 + r0; - case 0x367f8: - f0 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; + case 0x3dbf8: + f0 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; f2 = r3; - case 0x36800: - pc=0x36800; + case 0x3dc00: + pc = 0x3dc00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_36800() throws ExecutionException { /* 0x36800 - 0x36a00 */ + + private final void run_3dc00() throws ExecutionException { /* 0x3dc00 - 0x3de00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x36800: - f1 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x3dc00: + f1 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; f3 = r2; - r5 = r5 + -8; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + r5 = r5 + -8; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r3 = f2; r2 = f3; - if(r5 != r6) { - /* Next insn is delay slot */ - pc=0x367f8; - run_36600(); return; + if (r5 != r6) { + /* Next insn is delay slot */ + pc = 0x3dbf8; + run_3da00(); + return; } - case 0x36820: - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x36d1c; - run_36c00(); return; + case 0x3dc20: + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3e11c; + run_3e000(); + return; } r6 = 32768 << 16; r4 = r2 ^ r6; r5 = r3 + r0; - writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r5; - writePages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff] = r4; - case 0x3683c: - r3 = readPages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff]; - f30 = readPages[(r29+684)>>>12][((r29+684)>>>2)&0x3ff]; - f28 = readPages[(r29+676)>>>12][((r29+676)>>>2)&0x3ff]; - f26 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; - f24 = readPages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff]; - f22 = readPages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff]; - f20 = readPages[(r29+644)>>>12][((r29+644)>>>2)&0x3ff]; - r31 = readPages[(r29+636)>>>12][((r29+636)>>>2)&0x3ff]; - r30 = readPages[(r29+632)>>>12][((r29+632)>>>2)&0x3ff]; - r23 = readPages[(r29+628)>>>12][((r29+628)>>>2)&0x3ff]; - r22 = readPages[(r29+624)>>>12][((r29+624)>>>2)&0x3ff]; - r21 = readPages[(r29+620)>>>12][((r29+620)>>>2)&0x3ff]; - r20 = readPages[(r29+616)>>>12][((r29+616)>>>2)&0x3ff]; - r19 = readPages[(r29+612)>>>12][((r29+612)>>>2)&0x3ff]; - r18 = readPages[(r29+608)>>>12][((r29+608)>>>2)&0x3ff]; - r17 = readPages[(r29+604)>>>12][((r29+604)>>>2)&0x3ff]; - r16 = readPages[(r29+600)>>>12][((r29+600)>>>2)&0x3ff]; - f31 = readPages[(r29+680)>>>12][((r29+680)>>>2)&0x3ff]; - f29 = readPages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff]; - f27 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; - f25 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; - f23 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; - f21 = readPages[(r29+640)>>>12][((r29+640)>>>2)&0x3ff]; + writePages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff] = r5; + writePages[(r23 + 0) >>> 12][((r23 + 0) >>> 2) & 0x3ff] = r4; + case 0x3dc3c: + r3 = readPages[(r29 + 580) >>> 12][((r29 + 580) >>> 2) & 0x3ff]; + f30 = readPages[(r29 + 684) >>> 12][((r29 + 684) >>> 2) & 0x3ff]; + f28 = readPages[(r29 + 676) >>> 12][((r29 + 676) >>> 2) & 0x3ff]; + f26 = readPages[(r29 + 668) >>> 12][((r29 + 668) >>> 2) & 0x3ff]; + f24 = readPages[(r29 + 660) >>> 12][((r29 + 660) >>> 2) & 0x3ff]; + f22 = readPages[(r29 + 652) >>> 12][((r29 + 652) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 644) >>> 12][((r29 + 644) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 636) >>> 12][((r29 + 636) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 632) >>> 12][((r29 + 632) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 628) >>> 12][((r29 + 628) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 624) >>> 12][((r29 + 624) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 620) >>> 12][((r29 + 620) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 616) >>> 12][((r29 + 616) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 612) >>> 12][((r29 + 612) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 608) >>> 12][((r29 + 608) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 604) >>> 12][((r29 + 604) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 600) >>> 12][((r29 + 600) >>> 2) & 0x3ff]; + f31 = readPages[(r29 + 680) >>> 12][((r29 + 680) >>> 2) & 0x3ff]; + f29 = readPages[(r29 + 672) >>> 12][((r29 + 672) >>> 2) & 0x3ff]; + f27 = readPages[(r29 + 664) >>> 12][((r29 + 664) >>> 2) & 0x3ff]; + f25 = readPages[(r29 + 656) >>> 12][((r29 + 656) >>> 2) & 0x3ff]; + f23 = readPages[(r29 + 648) >>> 12][((r29 + 648) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 640) >>> 12][((r29 + 640) >>> 2) & 0x3ff]; r2 = r3 & 7; r29 = r29 + 688; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x368a8: + case 0x3dca8: f0 = r0; f1 = r0; - /* Next insn is delay slot */ - pc=0x360f0; - run_36000(); return; - case 0x368bc: - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x3690c; + /* Next insn is delay slot */ + pc = 0x3d4f0; + run_3d400(); + return; + case 0x3dcbc: + if (r30 != r0) { + /* Next insn is delay slot */ + pc = 0x3dd0c; continue; } r2 = r22 + -1; r2 = r2 << 2; r2 = r21 + r2; - r4 = readPages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff]; + r4 = readPages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff]; r4 = r4 >> 23; - /* Next insn is delay slot */ - pc=0x36340; - run_36200(); return; - case 0x368e4: + /* Next insn is delay slot */ + pc = 0x3d740; + run_3d600(); + return; + case 0x3dce4: r2 = r22 + -1; r2 = r2 << 2; r2 = r21 + r2; - r6 = readPages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff]; + r6 = readPages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff]; r3 = 127 << 16; r3 = r3 | 65535; r3 = r6 & r3; - writePages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x36408; - run_36400(); return; - case 0x3690c: - f2 = readPages[(r28+-31332)>>>12][((r28+-31332)>>>2)&0x3ff]; - f3 = readPages[(r28+-31336)>>>12][((r28+-31336)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<=(Double.longBitsToDouble(((f27&0xffffffffL) << 32) | (f26&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x36960; + writePages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x3d808; + run_3d800(); + return; + case 0x3dd0c: + f2 = readPages[(r28 + -31772) >>> 12][((r28 + -31772) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31776) >>> 12][((r28 + -31776) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) <= (Double + .longBitsToDouble(((f27 & 0xffffffffL) << 32) | (f26 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x3dd60; continue; } r4 = r0 + r0; - /* Next insn is delay slot */ - pc=0x36414; - run_36400(); return; - case 0x36938: + /* Next insn is delay slot */ + pc = 0x3d814; + run_3d800(); + return; + case 0x3dd38: f0 = r0; r2 = r21 + r5; f1 = r0; r5 = r5 + 8; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = f0; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = f1; - if(r5 != r8) { - /* Next insn is delay slot */ - pc=0x36130; - run_36000(); return; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = f0; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = f1; + if (r5 != r8) { + /* Next insn is delay slot */ + pc = 0x3d530; + run_3d400(); + return; } - /* Next insn is delay slot */ - pc=0x3618c; - run_36000(); return; - case 0x36960: - r2 = readPages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x3d58c; + run_3d400(); + return; + case 0x3dd60: + r2 = readPages[(r29 + 580) >>> 12][((r29 + 580) >>> 2) & 0x3ff]; r4 = r0 + 2; r2 = r2 + 1; - writePages[(r29+580)>>>12][((r29+580)>>>2)&0x3ff] = r2; - if(r22 > 0) { - /* Next insn is delay slot */ - pc=0x36360; - run_36200(); return; + writePages[(r29 + 580) >>> 12][((r29 + 580) >>> 2) & 0x3ff] = r2; + if (r22 > 0) { + /* Next insn is delay slot */ + pc = 0x3d760; + run_3d600(); + return; } - case 0x36978: + case 0x3dd78: r5 = r0 + r0; - /* Next insn is delay slot */ - pc=0x363c8; - run_36200(); return; - case 0x36984: + /* Next insn is delay slot */ + pc = 0x3d7c8; + run_3d600(); + return; + case 0x3dd84: f0 = r0; r2 = r8 << 3; f1 = r0; r2 = r21 + r2; r8 = r8 + 1; - writePages[(r2+164)>>>12][((r2+164)>>>2)&0x3ff] = f0; - writePages[(r2+160)>>>12][((r2+160)>>>2)&0x3ff] = f1; + writePages[(r2 + 164) >>> 12][((r2 + 164) >>> 2) & 0x3ff] = f0; + writePages[(r2 + 160) >>> 12][((r2 + 160) >>> 2) & 0x3ff] = f1; r9 = r9 + -8; - if(r8 != r11) { - /* Next insn is delay slot */ - pc=0x36734; - run_36600(); return; + if (r8 != r11) { + /* Next insn is delay slot */ + pc = 0x3db34; + run_3da00(); + return; } - /* Next insn is delay slot */ - pc=0x367b4; - run_36600(); return; - case 0x369b4: - if(r5 < 0) { - /* Next insn is delay slot */ - pc=0x36d0c; - run_36c00(); return; + /* Next insn is delay slot */ + pc = 0x3dbb4; + run_3da00(); + return; + case 0x3ddb4: + if (r5 < 0) { + /* Next insn is delay slot */ + pc = 0x3e10c; + run_3e000(); + return; } r2 = r29 + 176; r6 = r5 << 3; @@ -41448,266 +42944,332 @@ public final class AcmeCrossAssembler extends UnixRuntime { r7 = r29 + 168; r3 = r0 + r0; r2 = r0 + r0; - case 0x369d4: - f0 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; + case 0x3ddd4: + f0 = readPages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff]; f2 = r3; - f1 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; + f1 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; f3 = r2; - r6 = r6 + -8; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + r6 = r6 + -8; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r3 = f2; r2 = f3; - if(r6 != r7) { - /* Next insn is delay slot */ - pc=0x369d4; + if (r6 != r7) { + /* Next insn is delay slot */ + pc = 0x3ddd4; continue; } - case 0x369fc: - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x36bf4; - run_36a00(); return; + case 0x3ddfc: + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3dff4; + run_3de00(); + return; } - case 0x36a00: - pc=0x36a00; + case 0x3de00: + pc = 0x3de00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_36a00() throws ExecutionException { /* 0x36a00 - 0x36c00 */ + + private final void run_3de00() throws ExecutionException { /* 0x3de00 - 0x3e000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x36a00: + for (;;) { + switch (pc) { + case 0x3de00: r8 = 32768 << 16; r6 = r2 ^ r8; r7 = r3 + r0; - case 0x36a10: + case 0x3de10: f2 = r3; - f0 = readPages[(r29+180)>>>12][((r29+180)>>>2)&0x3ff]; + f0 = readPages[(r29 + 180) >>> 12][((r29 + 180) >>> 2) & 0x3ff]; f3 = r2; - f1 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r7; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - writePages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff] = r6; + f1 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + writePages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff] = r7; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + writePages[(r23 + 0) >>> 12][((r23 + 0) >>> 2) & 0x3ff] = r6; r3 = f2; r2 = f3; - if(r5 <= 0) { - /* Next insn is delay slot */ - pc=0x36a70; + if (r5 <= 0) { + /* Next insn is delay slot */ + pc = 0x3de70; continue; } r6 = r29 + 184; r5 = r5 << 3; r5 = r6 + r5; - case 0x36a48: - f0 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; + case 0x3de48: + f0 = readPages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff]; f2 = r3; - f1 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; + f1 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; f3 = r2; - r6 = r6 + 8; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + r6 = r6 + 8; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r3 = f2; r2 = f3; - if(r6 != r5) { - /* Next insn is delay slot */ - pc=0x36a48; + if (r6 != r5) { + /* Next insn is delay slot */ + pc = 0x3de48; continue; } - case 0x36a70: - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x36cac; - run_36c00(); return; + case 0x3de70: + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3e0ac; + run_3e000(); + return; } r6 = 32768 << 16; r4 = r2 ^ r6; r5 = r3 + r0; - writePages[(r23+12)>>>12][((r23+12)>>>2)&0x3ff] = r5; - writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x3683c; - run_36800(); return; - case 0x36a94: - r7 = readPages[(r29+704)>>>12][((r29+704)>>>2)&0x3ff]; + writePages[(r23 + 12) >>> 12][((r23 + 12) >>> 2) & 0x3ff] = r5; + writePages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x3dc3c; + run_3dc00(); + return; + case 0x3de94: + r7 = readPages[(r29 + 704) >>> 12][((r29 + 704) >>> 2) & 0x3ff]; r2 = r0 + 3; - if(r7 != r2) { - /* Next insn is delay slot */ - pc=0x3683c; - run_36800(); return; + if (r7 != r2) { + /* Next insn is delay slot */ + pc = 0x3dc3c; + run_3dc00(); + return; } - if(r5 <= 0) { - /* Next insn is delay slot */ - pc=0x36cfc; - run_36c00(); return; + if (r5 <= 0) { + /* Next insn is delay slot */ + pc = 0x3e0fc; + run_3e000(); + return; } r9 = r5 << 3; r2 = r21 + r9; - f0 = readPages[(r2+164)>>>12][((r2+164)>>>2)&0x3ff]; + f0 = readPages[(r2 + 164) >>> 12][((r2 + 164) >>> 2) & 0x3ff]; r6 = r29 + 176; - f1 = readPages[(r2+160)>>>12][((r2+160)>>>2)&0x3ff]; + f1 = readPages[(r2 + 160) >>> 12][((r2 + 160) >>> 2) & 0x3ff]; r2 = r5 + -1; r2 = r2 << 3; r2 = r6 + r2; r7 = r29 + 168; r3 = r2 + r0; - /* Next insn is delay slot */ - pc=0x36ae0; + /* Next insn is delay slot */ + pc = 0x3dee0; continue; - case 0x36adc: + case 0x3dedc: f0 = f2; f1 = f3; - case 0x36ae0: - f4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; + case 0x3dee0: + f4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; r3 = r3 + -8; - f5 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = f2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = f3; - writePages[(r3+20)>>>12][((r3+20)>>>2)&0x3ff] = f0; - writePages[(r3+16)>>>12][((r3+16)>>>2)&0x3ff] = f1; - if(r3 != r7) { - /* Next insn is delay slot */ - pc=0x36adc; + f5 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = f2; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = f3; + writePages[(r3 + 20) >>> 12][((r3 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r3 + 16) >>> 12][((r3 + 16) >>> 2) & 0x3ff] = f1; + if (r3 != r7) { + /* Next insn is delay slot */ + pc = 0x3dedc; continue; } r5 = r5 < 2 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x36cfc; - run_36c00(); return; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x3e0fc; + run_3e000(); + return; } r21 = r21 + r9; - f0 = readPages[(r21+164)>>>12][((r21+164)>>>2)&0x3ff]; - f1 = readPages[(r21+160)>>>12][((r21+160)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x36b3c; + f0 = readPages[(r21 + 164) >>> 12][((r21 + 164) >>> 2) & 0x3ff]; + f1 = readPages[(r21 + 160) >>> 12][((r21 + 160) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x3df3c; continue; - case 0x36b38: + case 0x3df38: f0 = f2; f1 = f3; - case 0x36b3c: - f4 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; + case 0x3df3c: + f4 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; r2 = r2 + -8; - f5 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = f2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = f3; - writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = f0; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = f1; - if(r6 != r2) { - /* Next insn is delay slot */ - pc=0x36b38; + f5 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = f2; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = f3; + writePages[(r2 + 20) >>> 12][((r2 + 20) >>> 2) & 0x3ff] = f0; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = f1; + if (r6 != r2) { + /* Next insn is delay slot */ + pc = 0x3df38; continue; } r9 = r6 + r9; r3 = r0 + r0; r6 = r6 + 8; r2 = r0 + r0; - case 0x36b80: - f0 = readPages[(r9+4)>>>12][((r9+4)>>>2)&0x3ff]; + case 0x3df80: + f0 = readPages[(r9 + 4) >>> 12][((r9 + 4) >>> 2) & 0x3ff]; f2 = r3; - f1 = readPages[(r9+0)>>>12][((r9+0)>>>2)&0x3ff]; + f1 = readPages[(r9 + 0) >>> 12][((r9 + 0) >>> 2) & 0x3ff]; f3 = r2; - r9 = r9 + -8; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + r9 = r9 + -8; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r3 = f2; r2 = f3; - if(r9 != r6) { - /* Next insn is delay slot */ - pc=0x36b80; + if (r9 != r6) { + /* Next insn is delay slot */ + pc = 0x3df80; continue; } - case 0x36ba8: - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x36cc4; - run_36c00(); return; + case 0x3dfa8: + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3e0c4; + run_3e000(); + return; } - r5 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; + r5 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; r4 = 32768 << 16; r5 = r5 ^ r4; - writePages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff] = r5; - r5 = readPages[(r29+180)>>>12][((r29+180)>>>2)&0x3ff]; - writePages[(r23+20)>>>12][((r23+20)>>>2)&0x3ff] = r3; - writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r5; - r5 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; + writePages[(r23 + 0) >>> 12][((r23 + 0) >>> 2) & 0x3ff] = r5; + r5 = readPages[(r29 + 180) >>> 12][((r29 + 180) >>> 2) & 0x3ff]; + writePages[(r23 + 20) >>> 12][((r23 + 20) >>> 2) & 0x3ff] = r3; + writePages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff] = r5; + r5 = readPages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff]; r5 = r5 ^ r4; - writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = r5; - r5 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; + writePages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff] = r5; + r5 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; r4 = r2 ^ r4; - writePages[(r23+12)>>>12][((r23+12)>>>2)&0x3ff] = r5; - writePages[(r23+16)>>>12][((r23+16)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x3683c; - run_36800(); return; - case 0x36bf4: + writePages[(r23 + 12) >>> 12][((r23 + 12) >>> 2) & 0x3ff] = r5; + writePages[(r23 + 16) >>> 12][((r23 + 16) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x3dc3c; + run_3dc00(); + return; + case 0x3dff4: r7 = r3 + r0; r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x36a10; + /* Next insn is delay slot */ + pc = 0x3de10; continue; - case 0x36c00: - pc=0x36c00; + case 0x3e000: + pc = 0x3e000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_36c00() throws ExecutionException { /* 0x36c00 - 0x36e00 */ + + private final void run_3e000() throws ExecutionException { /* 0x3e000 - 0x3e200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x36c00: - case 0x36c04: + for (;;) { + switch (pc) { + case 0x3e000: + case 0x3e004: r3 = r0 + 1; - /* Next insn is delay slot */ - pc=0x364ac; - run_36400(); return; - case 0x36c10: + /* Next insn is delay slot */ + pc = 0x3d8ac; + run_3d800(); + return; + case 0x3e010: r7 = r21 + r7; - r2 = readPages[(r7+480)>>>12][((r7+480)>>>2)&0x3ff]; + r2 = readPages[(r7 + 480) >>> 12][((r7 + 480) >>> 2) & 0x3ff]; r30 = r30 + -24; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x366b4; - run_36600(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3dab4; + run_3da00(); + return; } r3 = r5 + -1; r2 = r3 << 2; r5 = r29 + 496; r2 = r5 + r2; - /* Next insn is delay slot */ - pc=0x36c40; + /* Next insn is delay slot */ + pc = 0x3e040; continue; - case 0x36c3c: + case 0x3e03c: r3 = r3 + -1; - case 0x36c40: + case 0x3e040: r2 = r2 + -4; - r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; + r6 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; r5 = r3 + r0; r30 = r30 + -24; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x36c3c; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x3e03c; continue; } - /* Next insn is delay slot */ - pc=0x366b4; - run_36600(); return; - case 0x36c60: + /* Next insn is delay slot */ + pc = 0x3dab4; + run_3da00(); + return; + case 0x3e060: r9 = r0 + r0; - /* Next insn is delay slot */ - pc=0x360a0; - run_36000(); return; - case 0x36c6c: + /* Next insn is delay slot */ + pc = 0x3d4a0; + run_3d400(); + return; + case 0x3e06c: r2 = r22 << 2; r2 = r21 + r2; r6 = fcsr; @@ -41715,94 +43277,115 @@ public final class AcmeCrossAssembler extends UnixRuntime { r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f2 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f2 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f2 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f2 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity } fcsr = r6; - writePages[(r2+480)>>>12][((r2+480)>>>2)&0x3ff] = f2; + writePages[(r2 + 480) >>> 12][((r2 + 480) >>> 2) & 0x3ff] = f2; r5 = r22 + r0; - /* Next insn is delay slot */ - pc=0x366b4; - run_36600(); return; - case 0x36cac: + /* Next insn is delay slot */ + pc = 0x3dab4; + run_3da00(); + return; + case 0x3e0ac: r5 = r3 + r0; r4 = r2 + r0; - writePages[(r23+12)>>>12][((r23+12)>>>2)&0x3ff] = r5; - writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x3683c; - run_36800(); return; - case 0x36cc4: - f0 = readPages[(r29+180)>>>12][((r29+180)>>>2)&0x3ff]; - writePages[(r23+20)>>>12][((r23+20)>>>2)&0x3ff] = r3; - f1 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - writePages[(r23+16)>>>12][((r23+16)>>>2)&0x3ff] = r2; - writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = f0; - writePages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff] = f1; - f0 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; - f1 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; - writePages[(r23+12)>>>12][((r23+12)>>>2)&0x3ff] = f0; - writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x3683c; - run_36800(); return; - case 0x36cfc: + writePages[(r23 + 12) >>> 12][((r23 + 12) >>> 2) & 0x3ff] = r5; + writePages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x3dc3c; + run_3dc00(); + return; + case 0x3e0c4: + f0 = readPages[(r29 + 180) >>> 12][((r29 + 180) >>> 2) & 0x3ff]; + writePages[(r23 + 20) >>> 12][((r23 + 20) >>> 2) & 0x3ff] = r3; + f1 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + writePages[(r23 + 16) >>> 12][((r23 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff] = f0; + writePages[(r23 + 0) >>> 12][((r23 + 0) >>> 2) & 0x3ff] = f1; + f0 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; + f1 = readPages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff]; + writePages[(r23 + 12) >>> 12][((r23 + 12) >>> 2) & 0x3ff] = f0; + writePages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff] = f1; + /* Next insn is delay slot */ + pc = 0x3dc3c; + run_3dc00(); + return; + case 0x3e0fc: r3 = r0 + r0; r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x36ba8; - run_36a00(); return; - case 0x36d0c: + /* Next insn is delay slot */ + pc = 0x3dfa8; + run_3de00(); + return; + case 0x3e10c: r3 = r0 + r0; r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x369fc; - run_36800(); return; - case 0x36d1c: + /* Next insn is delay slot */ + pc = 0x3ddfc; + run_3dc00(); + return; + case 0x3e11c: r5 = r3 + r0; r4 = r2 + r0; - writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r5; - writePages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x3683c; - run_36800(); return; - case 0x36d34: + writePages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff] = r5; + writePages[(r23 + 0) >>> 12][((r23 + 0) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x3dc3c; + run_3dc00(); + return; + case 0x3e134: r3 = r0 + r0; r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x36820; - run_36800(); return; - case 0x36d44: + /* Next insn is delay slot */ + pc = 0x3dc20; + run_3dc00(); + return; + case 0x3e144: r16 = r7 << 3; r21 = r29 + 16; - /* Next insn is delay slot */ - pc=0x3618c; - run_36000(); return; - case 0x36e00: - pc=0x36e00; + /* Next insn is delay slot */ + pc = 0x3d58c; + run_3d400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3e200: + pc = 0x3e200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_36e00() throws ExecutionException { /* 0x36e00 - 0x37000 */ + + private final void run_3e200() throws ExecutionException { /* 0x3e200 - 0x3e400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x36e00: + for (;;) { + switch (pc) { + case 0x3e200: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; r2 = r3 & r2; r3 = 15936 << 16; r2 = r2 < r3 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x36e58; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3e258; continue; } r4 = fcsr; @@ -41810,90 +43393,213 @@ public final class AcmeCrossAssembler extends UnixRuntime { r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f0 = (int)Math.floor((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f0 = (int)(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL))); break; // Round towards zero - case 2: f0 = (int)Math.ceil((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); break; // Round towards plus infinity - case 3: f0 = (int)Math.floor((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f0 = (int) (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))); + break; // Round towards zero + case 2: + f0 = (int) Math + .ceil((Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + break; // Round towards minus infinity } fcsr = r4; r2 = f0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x36f28; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3e328; continue; } - case 0x36e58: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f6 = readPages[(r28+-31316)>>>12][((r28+-31316)>>>2)&0x3ff]; - f8 = readPages[(r28+-31308)>>>12][((r28+-31308)>>>2)&0x3ff]; - f7 = readPages[(r28+-31320)>>>12][((r28+-31320)>>>2)&0x3ff]; - f9 = readPages[(r28+-31312)>>>12][((r28+-31312)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f4 = readPages[(r28+-31284)>>>12][((r28+-31284)>>>2)&0x3ff]; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - f5 = readPages[(r28+-31288)>>>12][((r28+-31288)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f8 = readPages[(r28+-31300)>>>12][((r28+-31300)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f9 = readPages[(r28+-31304)>>>12][((r28+-31304)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f8 = readPages[(r28+-31292)>>>12][((r28+-31292)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f9 = readPages[(r28+-31296)>>>12][((r28+-31296)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x36f00; + case 0x3e258: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f6 = readPages[(r28 + -31756) >>> 12][((r28 + -31756) >>> 2) & 0x3ff]; + f8 = readPages[(r28 + -31748) >>> 12][((r28 + -31748) >>> 2) & 0x3ff]; + f7 = readPages[(r28 + -31760) >>> 12][((r28 + -31760) >>> 2) & 0x3ff]; + f9 = readPages[(r28 + -31752) >>> 12][((r28 + -31752) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f4 = readPages[(r28 + -31724) >>> 12][((r28 + -31724) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -31728) >>> 12][((r28 + -31728) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f8 = readPages[(r28 + -31740) >>> 12][((r28 + -31740) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f9 = readPages[(r28 + -31744) >>> 12][((r28 + -31744) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f8 = readPages[(r28 + -31732) >>> 12][((r28 + -31732) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f9 = readPages[(r28 + -31736) >>> 12][((r28 + -31736) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3e300; continue; } - f6 = readPages[(r28+-31268)>>>12][((r28+-31268)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f7 = readPages[(r28+-31272)>>>12][((r28+-31272)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))); f15 = (int)(l >>> 32); f14 = (int)l; } - f2 = readPages[(r28+-31276)>>>12][((r28+-31276)>>>2)&0x3ff]; - f3 = readPages[(r28+-31280)>>>12][((r28+-31280)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=r31; + f6 = readPages[(r28 + -31708) >>> 12][((r28 + -31708) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f7 = readPages[(r28 + -31712) >>> 12][((r28 + -31712) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL)))); + f15 = (int) (l >>> 32); + f14 = (int) l; + } + f2 = readPages[(r28 + -31716) >>> 12][((r28 + -31716) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31720) >>> 12][((r28 + -31720) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = r31; return; - case 0x36f00: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f8 = readPages[(r28+-31276)>>>12][((r28+-31276)>>>2)&0x3ff]; - f9 = readPages[(r28+-31280)>>>12][((r28+-31280)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=r31; + case 0x3e300: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f8 = readPages[(r28 + -31716) >>> 12][((r28 + -31716) >>> 2) & 0x3ff]; + f9 = readPages[(r28 + -31720) >>> 12][((r28 + -31720) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = r31; return; - case 0x36f28: + case 0x3e328: f0 = f12; f1 = f13; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x37000: - pc=0x37000; + case 0x3e400: + pc = 0x3e400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_37000() throws ExecutionException { /* 0x37000 - 0x37200 */ + + private final void run_3e400() throws ExecutionException { /* 0x3e400 - 0x3e600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x37000: + for (;;) { + switch (pc) { + case 0x3e400: r2 = f13; r10 = 32767 << 16; r10 = r10 | 65535; @@ -41902,13 +43608,13 @@ public final class AcmeCrossAssembler extends UnixRuntime { r29 = r29 + -24; r8 = r10 < r8 ? 1 : 0; r3 = f12; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; r5 = f14; r4 = f15; r6 = r2 + r0; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x370cc; + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x3e4cc; continue; } f12 = r3; @@ -41918,271 +43624,567 @@ public final class AcmeCrossAssembler extends UnixRuntime { r1 = r12 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f0 = (int)Math.floor((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f0 = (int)(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL))); break; // Round towards zero - case 2: f0 = (int)Math.ceil((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); break; // Round towards plus infinity - case 3: f0 = (int)Math.floor((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f0 = (int) (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))); + break; // Round towards zero + case 2: + f0 = (int) Math + .ceil((Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + break; // Round towards minus infinity } fcsr = r12; r8 = f0; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x37124; + if (r8 != r0) { + /* Next insn is delay slot */ + pc = 0x3e524; continue; } - r5 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + r5 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; r10 = r10 | r3; r4 = r5 + 1; r10 = r10 | r4; - if(r10 == r0) { - /* Next insn is delay slot */ - pc=0x37368; - run_37200(); return; + if (r10 == r0) { + /* Next insn is delay slot */ + pc = 0x3e768; + run_3e600(); + return; } - r6 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + r6 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; r4 = r0 + 1; - if(r6 == r4) { - /* Next insn is delay slot */ - pc=0x373b4; - run_37200(); return; + if (r6 == r4) { + /* Next insn is delay slot */ + pc = 0x3e7b4; + run_3e600(); + return; } - f0 = readPages[(r28+-31252)>>>12][((r28+-31252)>>>2)&0x3ff]; + f0 = readPages[(r28 + -31692) >>> 12][((r28 + -31692) >>> 2) & 0x3ff]; f2 = r3; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f1 = readPages[(r28+-31256)>>>12][((r28+-31256)>>>2)&0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -31696) >>> 12][((r28 + -31696) >>> 2) & 0x3ff]; f3 = r2; - r29 = r29 + 24; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=r31; + r29 = r29 + 24; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + / (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = r31; return; - case 0x370cc: + case 0x3e4cc: r8 = 16357 << 16; r8 = r8 | 37928; r8 = r10 < r8 ? 1 : 0; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x37124; + if (r8 != r0) { + /* Next insn is delay slot */ + pc = 0x3e524; continue; } - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x3738c; - run_37200(); return; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x3e78c; + run_3e600(); + return; } - case 0x370e8: + case 0x3e4e8: f4 = r3; - f0 = readPages[(r28+-31244)>>>12][((r28+-31244)>>>2)&0x3ff]; + f0 = readPages[(r28 + -31684) >>> 12][((r28 + -31684) >>> 2) & 0x3ff]; f5 = r2; - f1 = readPages[(r28+-31248)>>>12][((r28+-31248)>>>2)&0x3ff]; - f10 = r5; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f0 = readPages[(r28+-31236)>>>12][((r28+-31236)>>>2)&0x3ff]; + f1 = readPages[(r28 + -31688) >>> 12][((r28 + -31688) >>> 2) & 0x3ff]; + f10 = r5; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f0 = readPages[(r28 + -31676) >>> 12][((r28 + -31676) >>> 2) & 0x3ff]; f11 = r4; - f1 = readPages[(r28+-31240)>>>12][((r28+-31240)>>>2)&0x3ff]; - r5 = r0 + r0; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r4 = r0 + r0; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + f1 = readPages[(r28 + -31680) >>> 12][((r28 + -31680) >>> 2) & 0x3ff]; + r5 = r0 + r0; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r4 = r0 + r0; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } r3 = f4; r2 = f5; - case 0x37124: + case 0x3e524: f10 = r3; f0 = r3; f11 = r2; f1 = r2; - f4 = r3; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + f4 = r3; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } f5 = r2; - f8 = readPages[(r28+-31220)>>>12][((r28+-31220)>>>2)&0x3ff]; - f10 = readPages[(r28+-31172)>>>12][((r28+-31172)>>>2)&0x3ff]; - f9 = readPages[(r28+-31224)>>>12][((r28+-31224)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - f4 = readPages[(r28+-31228)>>>12][((r28+-31228)>>>2)&0x3ff]; - f11 = readPages[(r28+-31176)>>>12][((r28+-31176)>>>2)&0x3ff]; - f5 = readPages[(r28+-31232)>>>12][((r28+-31232)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f8 = readPages[(r28+-31212)>>>12][((r28+-31212)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f9 = readPages[(r28+-31216)>>>12][((r28+-31216)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f8 = readPages[(r28+-31204)>>>12][((r28+-31204)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f9 = readPages[(r28+-31208)>>>12][((r28+-31208)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f8 = readPages[(r28+-31196)>>>12][((r28+-31196)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f9 = readPages[(r28+-31200)>>>12][((r28+-31200)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f8 = readPages[(r28+-31188)>>>12][((r28+-31188)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f9 = readPages[(r28+-31192)>>>12][((r28+-31192)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f8 = readPages[(r28+-31180)>>>12][((r28+-31180)>>>2)&0x3ff]; - f9 = readPages[(r28+-31184)>>>12][((r28+-31184)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f10 = readPages[(r28+-31164)>>>12][((r28+-31164)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f11 = readPages[(r28+-31168)>>>12][((r28+-31168)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f10 = readPages[(r28+-31156)>>>12][((r28+-31156)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f11 = readPages[(r28+-31160)>>>12][((r28+-31160)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f10 = readPages[(r28+-31148)>>>12][((r28+-31148)>>>2)&0x3ff]; - case 0x37200: - pc=0x37200; + f8 = readPages[(r28 + -31660) >>> 12][((r28 + -31660) >>> 2) & 0x3ff]; + f10 = readPages[(r28 + -31612) >>> 12][((r28 + -31612) >>> 2) & 0x3ff]; + f9 = readPages[(r28 + -31664) >>> 12][((r28 + -31664) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } + f4 = readPages[(r28 + -31668) >>> 12][((r28 + -31668) >>> 2) & 0x3ff]; + f11 = readPages[(r28 + -31616) >>> 12][((r28 + -31616) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -31672) >>> 12][((r28 + -31672) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f8 = readPages[(r28 + -31652) >>> 12][((r28 + -31652) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f9 = readPages[(r28 + -31656) >>> 12][((r28 + -31656) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f8 = readPages[(r28 + -31644) >>> 12][((r28 + -31644) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f9 = readPages[(r28 + -31648) >>> 12][((r28 + -31648) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f8 = readPages[(r28 + -31636) >>> 12][((r28 + -31636) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f9 = readPages[(r28 + -31640) >>> 12][((r28 + -31640) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f8 = readPages[(r28 + -31628) >>> 12][((r28 + -31628) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f9 = readPages[(r28 + -31632) >>> 12][((r28 + -31632) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f8 = readPages[(r28 + -31620) >>> 12][((r28 + -31620) >>> 2) & 0x3ff]; + f9 = readPages[(r28 + -31624) >>> 12][((r28 + -31624) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f10 = readPages[(r28 + -31604) >>> 12][((r28 + -31604) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f11 = readPages[(r28 + -31608) >>> 12][((r28 + -31608) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f10 = readPages[(r28 + -31596) >>> 12][((r28 + -31596) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f11 = readPages[(r28 + -31600) >>> 12][((r28 + -31600) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f10 = readPages[(r28 + -31588) >>> 12][((r28 + -31588) >>> 2) & 0x3ff]; + case 0x3e600: + pc = 0x3e600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_37200() throws ExecutionException { /* 0x37200 - 0x37400 */ + + private final void run_3e600() throws ExecutionException { /* 0x3e600 - 0x3e800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x37200: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f11 = readPages[(r28+-31152)>>>12][((r28+-31152)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f10 = readPages[(r28+-31140)>>>12][((r28+-31140)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f11 = readPages[(r28+-31144)>>>12][((r28+-31144)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - f10 = r5; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } + for (;;) { + switch (pc) { + case 0x3e600: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f11 = readPages[(r28 + -31592) >>> 12][((r28 + -31592) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f10 = readPages[(r28 + -31580) >>> 12][((r28 + -31580) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f11 = readPages[(r28 + -31584) >>> 12][((r28 + -31584) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } + f10 = r5; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } f11 = r4; r4 = 16357 << 16; r4 = r4 | 37928; - r10 = r10 < r4 ? 1 : 0; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f2 = readPages[(r28+-31132)>>>12][((r28+-31132)>>>2)&0x3ff]; - f3 = readPages[(r28+-31136)>>>12][((r28+-31136)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } + r10 = r10 < r4 ? 1 : 0; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f2 = readPages[(r28 + -31572) >>> 12][((r28 + -31572) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31576) >>> 12][((r28 + -31576) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } f0 = r3; - f1 = r2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - if(r10 == r0) { - /* Next insn is delay slot */ - pc=0x37308; + f1 = r2; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + if (r10 == r0) { + /* Next insn is delay slot */ + pc = 0x3e708; continue; } - r5 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + r5 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; r4 = r0 + 1; - if(r5 == r4) { - /* Next insn is delay slot */ - pc=0x373a8; + if (r5 == r4) { + /* Next insn is delay slot */ + pc = 0x3e7a8; continue; } - f0 = readPages[(r28+-31252)>>>12][((r28+-31252)>>>2)&0x3ff]; + f0 = readPages[(r28 + -31692) >>> 12][((r28 + -31692) >>> 2) & 0x3ff]; r4 = f5; - f1 = readPages[(r28+-31256)>>>12][((r28+-31256)>>>2)&0x3ff]; - r5 = r0 + r0; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + f1 = readPages[(r28 + -31696) >>> 12][((r28 + -31696) >>> 2) & 0x3ff]; + r5 = r0 + r0; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + / (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } f2 = r5; f10 = r3; r9 = r0 + r0; f3 = r4; f11 = r2; - f8 = r9; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f10 = readPages[(r28+-31260)>>>12][((r28+-31260)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f11 = readPages[(r28+-31264)>>>12][((r28+-31264)>>>2)&0x3ff]; + f8 = r9; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f10 = readPages[(r28 + -31700) >>> 12][((r28 + -31700) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + f11 = readPages[(r28 + -31704) >>> 12][((r28 + -31704) >>> 2) & 0x3ff]; r8 = f5; - f9 = r8; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - case 0x372f8: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + f9 = r8; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + case 0x3e6f8: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x37308: - f2 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r6 = r6 >> 30; - { long l = Double.doubleToLongBits(((double)f2)); f9 = (int)(l >>> 32); f8 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + case 0x3e708: + f2 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r6 = r6 >> 30; { + long l = Double.doubleToLongBits(((double) f2)); + f9 = (int) (l >>> 32); + f8 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } r6 = r6 & 2; r4 = r0 + 1; - r6 = r4 - r6; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + r6 = r4 - r6; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + / (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } f10 = r6; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits(((double)f10)); f1 = (int)(l >>> 32); f0 = (int)l; } - r29 = r29 + 24; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits(((double) f10)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r29 = r29 + 24; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } f4 = r3; - f5 = r2; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f9 = (int)(l >>> 32); f8 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=r31; + f5 = r2; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f9 = (int) (l >>> 32); + f8 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = r31; return; - case 0x37368: - /* Next insn is delay slot */ - r31=0x37370; - pc=0x32a00; - run_32a00(); return; - case 0x37370: - f4 = readPages[(r28+-31260)>>>12][((r28+-31260)>>>2)&0x3ff]; - f5 = readPages[(r28+-31264)>>>12][((r28+-31264)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x372f8; + case 0x3e768: + /* Next insn is delay slot */ + r31 = 0x3e770; + pc = 0x39e00; + run_39e00(); + return; + case 0x3e770: + f4 = readPages[(r28 + -31700) >>> 12][((r28 + -31700) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -31704) >>> 12][((r28 + -31704) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3e6f8; continue; - case 0x3738c: + case 0x3e78c: r11 = 32768 << 16; r8 = r2 ^ r11; r2 = r8 + r0; r8 = r4 ^ r11; r4 = r8 + r0; - /* Next insn is delay slot */ - pc=0x370e8; - run_37000(); return; - case 0x373a8: + /* Next insn is delay slot */ + pc = 0x3e4e8; + run_3e400(); + return; + case 0x3e7a8: f0 = f4; f1 = f5; - /* Next insn is delay slot */ - pc=0x372f8; + /* Next insn is delay slot */ + pc = 0x3e6f8; continue; - case 0x373b4: + case 0x3e7b4: f0 = r3; f1 = r2; - /* Next insn is delay slot */ - pc=0x372f8; + /* Next insn is delay slot */ + pc = 0x3e6f8; continue; - case 0x37400: - pc=0x37400; + case 0x3e800: + pc = 0x3e800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_37400() throws ExecutionException { /* 0x37400 - 0x37600 */ + + private final void run_3e800() throws ExecutionException { /* 0x3e800 - 0x3ea00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x37400: + for (;;) { + switch (pc) { + case 0x3e800: r2 = f13; r3 = 32767 << 16; r3 = r3 | 65535; @@ -42190,22 +44192,24 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = 32784 << 16; r2 = r2 + r3; r2 = r2 >>> 31; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x37600: - pc=0x37600; + case 0x3ea00: + pc = 0x3ea00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_37600() throws ExecutionException { /* 0x37600 - 0x37800 */ + + private final void run_3ea00() throws ExecutionException { /* 0x3ea00 - 0x3ec00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x37600: + for (;;) { + switch (pc) { + case 0x3ea00: r2 = f13; r3 = f12; r5 = r2 >> 20; @@ -42215,312 +44219,352 @@ public final class AcmeCrossAssembler extends UnixRuntime { r8 = r2 + r0; r9 = r2 + r0; r6 = r3 + r0; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x376ac; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x3eaac; continue; } - if(r4 < 0) { - /* Next insn is delay slot */ - pc=0x37740; + if (r4 < 0) { + /* Next insn is delay slot */ + pc = 0x3eb40; continue; } r5 = 15 << 16; r5 = r5 | 65535; - r5 = r5 >> (r4&0x1f); + r5 = r5 >> (r4 & 0x1f); r7 = r5 & r2; r7 = r7 | r3; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x376c4; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x3eac4; continue; } - f0 = readPages[(r28+-31124)>>>12][((r28+-31124)>>>2)&0x3ff]; - f1 = readPages[(r28+-31128)>>>12][((r28+-31128)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } + f0 = readPages[(r28 + -31564) >>> 12][((r28 + -31564) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -31568) >>> 12][((r28 + -31568) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } f0 = r0; f1 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x37698; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) < (Double + .longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3ea98; continue; } - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x37798; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x3eb98; continue; } - case 0x3768c: + case 0x3ea8c: r8 = ~(r0 | r5); r8 = r9 & r8; r6 = r0 + r0; - case 0x37698: + case 0x3ea98: f0 = r6; f1 = r8; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x376ac: + case 0x3eaac: r7 = r4 < 52 ? 1 : 0; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x376d0; + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x3ead0; continue; } r2 = r0 + 1024; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x3778c; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x3eb8c; continue; } - case 0x376c4: + case 0x3eac4: f0 = f12; f1 = f13; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x376d0: + case 0x3ead0: r10 = r0 + -1; r7 = r5 + -1043; - r7 = r10 >>> (r7&0x1f); + r7 = r10 >>> (r7 & 0x1f); r10 = r7 & r3; - if(r10 == r0) { - /* Next insn is delay slot */ - pc=0x376c4; + if (r10 == r0) { + /* Next insn is delay slot */ + pc = 0x3eac4; continue; } - f0 = readPages[(r28+-31124)>>>12][((r28+-31124)>>>2)&0x3ff]; - f1 = readPages[(r28+-31128)>>>12][((r28+-31128)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } + f0 = readPages[(r28 + -31564) >>> 12][((r28 + -31564) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -31568) >>> 12][((r28 + -31568) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } f0 = r0; f1 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x37698; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) < (Double + .longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3ea98; continue; } - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x377ac; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x3ebac; continue; } - case 0x37724: + case 0x3eb24: r7 = ~(r0 | r7); r6 = r6 & r7; f0 = r6; r8 = r9 + r0; f1 = r8; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x37740: - f0 = readPages[(r28+-31124)>>>12][((r28+-31124)>>>2)&0x3ff]; - f1 = readPages[(r28+-31128)>>>12][((r28+-31128)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f13 = (int)(l >>> 32); f12 = (int)l; } + case 0x3eb40: + f0 = readPages[(r28 + -31564) >>> 12][((r28 + -31564) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -31568) >>> 12][((r28 + -31568) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f13 = (int) (l >>> 32); + f12 = (int) l; + } f0 = r0; f1 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x37698; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) < (Double + .longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x3ea98; continue; } - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x377e4; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x3ebe4; continue; } r6 = r0 + r0; r8 = r0 + r0; - /* Next insn is delay slot */ - pc=0x37698; + /* Next insn is delay slot */ + pc = 0x3ea98; continue; - case 0x3778c: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=r31; + case 0x3eb8c: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = r31; return; - case 0x37798: + case 0x3eb98: r9 = 16 << 16; - r4 = r9 >> (r4&0x1f); + r4 = r9 >> (r4 & 0x1f); r9 = r4 + r2; - /* Next insn is delay slot */ - pc=0x3768c; + /* Next insn is delay slot */ + pc = 0x3ea8c; continue; - case 0x377ac: + case 0x3ebac: r8 = r0 + 20; - if(r4 == r8) { - /* Next insn is delay slot */ - pc=0x377d8; + if (r4 == r8) { + /* Next insn is delay slot */ + pc = 0x3ebd8; continue; } r6 = r0 + 1075; r5 = r6 - r5; r6 = r0 + 1; - r6 = r6 << (r5&0x1f); + r6 = r6 << (r5 & 0x1f); r6 = r6 + r3; r4 = ((r6 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x37724; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3eb24; continue; } - case 0x377d8: + case 0x3ebd8: r9 = r2 + 1; - /* Next insn is delay slot */ - pc=0x37724; + /* Next insn is delay slot */ + pc = 0x3eb24; continue; - case 0x377e4: + case 0x3ebe4: r4 = 32767 << 16; r4 = r4 | 65535; r2 = r4 & r2; r2 = r2 | r3; r6 = r0 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x37698; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3ea98; continue; } - case 0x37800: - pc=0x37800; + case 0x3ec00: + pc = 0x3ec00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_37800() throws ExecutionException { /* 0x37800 - 0x37a00 */ + + private final void run_3ec00() throws ExecutionException { /* 0x3ec00 - 0x3ee00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x37800: + for (;;) { + switch (pc) { + case 0x3ec00: r8 = 49136 << 16; - /* Next insn is delay slot */ - pc=0x37698; - run_37600(); return; - case 0x37a00: - pc=0x37a00; + /* Next insn is delay slot */ + pc = 0x3ea98; + run_3ea00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3ee00: + pc = 0x3ee00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_37a00() throws ExecutionException { /* 0x37a00 - 0x37c00 */ + + private final void run_3ee00() throws ExecutionException { /* 0x3ee00 - 0x3f000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x37a00: + for (;;) { + switch (pc) { + case 0x3ee00: r4 = f13; r3 = 32767 << 16; r3 = r3 | 65535; r3 = r3 & r4; r5 = f12; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x37a40; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x3ee40; continue; } r2 = 65520 << 16; r2 = r3 + r2; r6 = 32736 << 16; r2 = ((r2 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x37a54; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3ee54; continue; } r2 = r0 + 4; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x37a40: - r2 = (r5&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + case 0x3ee40: + r2 = (r5 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; r3 = r0 + 3; r2 = r3 - r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x37a54: + case 0x3ee54: r2 = 16 << 16; r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x37a70; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3ee70; continue; } r2 = r0 + 3; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x37a70: + case 0x3ee70: r2 = 32752 << 16; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x37a88; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x3ee88; continue; } r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x37a88: - r2 = (r5&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - /* Next insn is delay slot */ - pc=r31; + case 0x3ee88: + r2 = (r5 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + /* Next insn is delay slot */ + pc = r31; return; - case 0x37c00: - pc=0x37c00; + case 0x3f000: + pc = 0x3f000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_37c00() throws ExecutionException { /* 0x37c00 - 0x37e00 */ + + private final void run_3f000() throws ExecutionException { /* 0x3f000 - 0x3f200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x37c00: + for (;;) { + switch (pc) { + case 0x3f000: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x37e00: - pc=0x37e00; + case 0x3f200: + pc = 0x3f200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_37e00() throws ExecutionException { /* 0x37e00 - 0x38000 */ + + private final void run_3f200() throws ExecutionException { /* 0x3f200 - 0x3f400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x37e00: + for (;;) { + switch (pc) { + case 0x3f200: r3 = r0 + r0; f0 = r3; r2 = 32760 << 16; f1 = r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x38000: - pc=0x38000; + case 0x3f400: + pc = 0x3f400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_38000() throws ExecutionException { /* 0x38000 - 0x38200 */ + + private final void run_3f400() throws ExecutionException { /* 0x3f400 - 0x3f600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x38000: + for (;;) { + switch (pc) { + case 0x3f400: r2 = f13; r29 = r29 + -8; r5 = r2 >> 20; @@ -42530,121 +44574,133 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = f12; r9 = r2 + r0; r6 = r2 >>> 31; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x38090; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x3f490; continue; } - if(r4 < 0) { - /* Next insn is delay slot */ - pc=0x38144; + if (r4 < 0) { + /* Next insn is delay slot */ + pc = 0x3f544; continue; } r5 = 15 << 16; r5 = r5 | 65535; - r5 = r5 >> (r4&0x1f); + r5 = r5 >> (r4 & 0x1f); r7 = r5 & r2; r7 = r7 | r3; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x380a8; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x3f4a8; continue; } r5 = r5 >>> 1; r7 = r5 & r2; r7 = r7 | r3; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x381f4; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x3f5f4; continue; } r7 = r0 + 19; - if(r4 == r7) { - /* Next insn is delay slot */ - pc=0x3820c; - run_38200(); return; + if (r4 == r7) { + /* Next insn is delay slot */ + pc = 0x3f60c; + run_3f600(); + return; } r8 = r0 + r0; - case 0x38074: + case 0x3f474: r9 = 4 << 16; r5 = ~(r0 | r5); r2 = r5 & r2; - r4 = r9 >> (r4&0x1f); + r4 = r9 >> (r4 & 0x1f); r9 = r2 | r4; - /* Next insn is delay slot */ - pc=0x380f8; + /* Next insn is delay slot */ + pc = 0x3f4f8; continue; - case 0x38090: + case 0x3f490: r7 = r4 < 52 ? 1 : 0; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x380b8; + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x3f4b8; continue; } r2 = r0 + 1024; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x38200; - run_38200(); return; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x3f600; + run_3f600(); + return; } - case 0x380a8: + case 0x3f4a8: f0 = f12; f1 = f13; - case 0x380ac: + case 0x3f4ac: r29 = r29 + 8; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x380b8: + case 0x3f4b8: r5 = r5 + -1043; r4 = r0 + -1; - r4 = r4 >>> (r5&0x1f); + r4 = r4 >>> (r5 & 0x1f); r7 = r4 & r3; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x380a8; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x3f4a8; continue; } r4 = r4 >>> 1; r7 = r4 & r3; r8 = r3 + r0; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x380f8; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x3f4f8; continue; } r4 = ~(r0 | r4); r2 = 16384 << 16; r8 = r4 & r3; - r5 = r2 >> (r5&0x1f); + r5 = r2 >> (r5 & 0x1f); r8 = r8 | r5; - case 0x380f8: - r2 = 7 << 16; + case 0x3f4f8: + r2 = 6 << 16; r6 = r6 << 3; - r2 = r2 + 192; + r2 = r2 + -27904; r6 = r6 + r2; f2 = r8; - f0 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; + f0 = readPages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff]; f3 = r9; - f1 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - writePages[(r29+4)>>>12][((r29+4)>>>2)&0x3ff] = f2; - writePages[(r29+0)>>>12][((r29+0)>>>2)&0x3ff] = f3; - f12 = readPages[(r29+4)>>>12][((r29+4)>>>2)&0x3ff]; - f13 = readPages[(r29+0)>>>12][((r29+0)>>>2)&0x3ff]; - r29 = r29 + 8; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=r31; + f1 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + writePages[(r29 + 4) >>> 12][((r29 + 4) >>> 2) & 0x3ff] = f2; + writePages[(r29 + 0) >>> 12][((r29 + 0) >>> 2) & 0x3ff] = f3; + f12 = readPages[(r29 + 4) >>> 12][((r29 + 4) >>> 2) & 0x3ff]; + f13 = readPages[(r29 + 0) >>> 12][((r29 + 0) >>> 2) & 0x3ff]; + r29 = r29 + 8; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = r31; return; - case 0x38144: + case 0x3f544: r7 = 32767 << 16; r7 = r7 | 65535; r4 = r7 & r2; r4 = r4 | r3; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x380a8; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x3f4a8; continue; } r4 = 15 << 16; @@ -42659,71 +44715,92 @@ public final class AcmeCrossAssembler extends UnixRuntime { r8 = 65534 << 16; r2 = r8 & r2; r4 = r3 | r2; - r2 = 7 << 16; + r2 = 6 << 16; r3 = r6 << 3; r5 = f12; - r2 = r2 + 192; + r2 = r2 + -27904; r2 = r3 + r2; - f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; + f0 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; f2 = r5; - f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; + f1 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; f3 = r4; - r6 = r6 << 31; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - writePages[(r29+4)>>>12][((r29+4)>>>2)&0x3ff] = f2; - writePages[(r29+0)>>>12][((r29+0)>>>2)&0x3ff] = f3; - f2 = readPages[(r29+4)>>>12][((r29+4)>>>2)&0x3ff]; - f3 = readPages[(r29+0)>>>12][((r29+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + r6 = r6 << 31; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + writePages[(r29 + 4) >>> 12][((r29 + 4) >>> 2) & 0x3ff] = f2; + writePages[(r29 + 0) >>> 12][((r29 + 0) >>> 2) & 0x3ff] = f3; + f2 = readPages[(r29 + 4) >>> 12][((r29 + 4) >>> 2) & 0x3ff]; + f3 = readPages[(r29 + 0) >>> 12][((r29 + 0) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r4 = f1; r3 = f0; r4 = r7 & r4; f0 = r3; r2 = r6 | r4; f1 = r2; - /* Next insn is delay slot */ - pc=0x380ac; + /* Next insn is delay slot */ + pc = 0x3f4ac; continue; - case 0x381f4: + case 0x3f5f4: r8 = r0 + r0; - /* Next insn is delay slot */ - pc=0x380f8; + /* Next insn is delay slot */ + pc = 0x3f4f8; continue; - case 0x38200: - pc=0x38200; + case 0x3f600: + pc = 0x3f600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_38200() throws ExecutionException { /* 0x38200 - 0x38400 */ + + private final void run_3f600() throws ExecutionException { /* 0x3f600 - 0x3f800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x38200: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x380ac; - run_38000(); return; - case 0x3820c: + for (;;) { + switch (pc) { + case 0x3f600: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3f4ac; + run_3f400(); + return; + case 0x3f60c: r8 = 32768 << 16; - /* Next insn is delay slot */ - pc=0x38074; - run_38000(); return; - case 0x38400: - pc=0x38400; + /* Next insn is delay slot */ + pc = 0x3f474; + run_3f400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x3f800: + pc = 0x3f800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_38400() throws ExecutionException { /* 0x38400 - 0x38600 */ + + private final void run_3f800() throws ExecutionException { /* 0x3f800 - 0x3fa00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x38400: + for (;;) { + switch (pc) { + case 0x3f800: r2 = f13; r5 = 32752 << 16; r4 = r5 & r2; @@ -42731,34 +44808,39 @@ public final class AcmeCrossAssembler extends UnixRuntime { r4 = r4 >> 20; f14 = f12; f15 = f13; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f20; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f21; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = f21; r3 = f12; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x384c8; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x3f8c8; continue; } r4 = 32767 << 16; r4 = r4 | 65535; r2 = r4 & r2; r2 = r2 | r3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x38528; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3f928; continue; } - f0 = readPages[(r28+-31108)>>>12][((r28+-31108)>>>2)&0x3ff]; + f0 = readPages[(r28 + -31548) >>> 12][((r28 + -31548) >>> 2) & 0x3ff]; r4 = 65535 << 16; - f1 = readPages[(r28+-31112)>>>12][((r28+-31112)>>>2)&0x3ff]; - r4 = r4 + 15536; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f15 = (int)(l >>> 32); f14 = (int)l; } + f1 = readPages[(r28 + -31552) >>> 12][((r28 + -31552) >>> 2) & 0x3ff]; + r4 = r4 + 15536; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f15 = (int) (l >>> 32); + f14 = (int) l; + } r4 = r6 < r4 ? 1 : 0; r2 = f15; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x38544; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x3f944; continue; } r4 = r5 & r2; @@ -42767,48 +44849,54 @@ public final class AcmeCrossAssembler extends UnixRuntime { r7 = r4 + r6; r8 = r2 + r0; r2 = r7 < 2047 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x384e8; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x3f8e8; continue; } - case 0x3848c: - f20 = readPages[(r28+-31092)>>>12][((r28+-31092)>>>2)&0x3ff]; - f21 = readPages[(r28+-31096)>>>12][((r28+-31096)>>>2)&0x3ff]; + case 0x3f88c: + f20 = readPages[(r28 + -31532) >>> 12][((r28 + -31532) >>> 2) & 0x3ff]; + f21 = readPages[(r28 + -31536) >>> 12][((r28 + -31536) >>> 2) & 0x3ff]; f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31=0x384a8; - pc=0x38800; - run_38800(); return; - case 0x384a8: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x3f8a8; + pc = 0x3fc00; + run_3fc00(); return; - case 0x384c8: + case 0x3f8a8: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x3f8c8: r8 = r2 + r0; r2 = r0 + 2047; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x385ac; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x3f9ac; continue; } r7 = r4 + r6; r2 = r7 < 2047 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3848c; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3f88c; continue; } - case 0x384e8: - if(r7 <= 0) { - /* Next insn is delay slot */ - pc=0x38568; + case 0x3f8e8: + if (r7 <= 0) { + /* Next insn is delay slot */ + pc = 0x3f968; continue; } r3 = f14; @@ -42819,72 +44907,88 @@ public final class AcmeCrossAssembler extends UnixRuntime { f0 = r3; r2 = r7 | r8; f1 = r2; - case 0x38510: - f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + case 0x3f910: + f20 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x38528: - f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + case 0x3f928: + f20 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; f0 = f12; f1 = f13; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x38544: - f0 = readPages[(r28+-31100)>>>12][((r28+-31100)>>>2)&0x3ff]; - f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f1 = readPages[(r28+-31104)>>>12][((r28+-31104)>>>2)&0x3ff]; - f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f15&0xffffffffL) << 32) | (f14&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + case 0x3f944: + f0 = readPages[(r28 + -31540) >>> 12][((r28 + -31540) >>> 2) & 0x3ff]; + f20 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -31544) >>> 12][((r28 + -31544) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f15 & 0xffffffffL) << 32) | (f14 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x38568: + case 0x3f968: r2 = r7 < -53 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x385c8; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x3f9c8; continue; } r2 = r0 | 50001; r6 = r6 < r2 ? 1 : 0; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x3848c; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x3f88c; continue; } - f20 = readPages[(r28+-31100)>>>12][((r28+-31100)>>>2)&0x3ff]; - f21 = readPages[(r28+-31104)>>>12][((r28+-31104)>>>2)&0x3ff]; + f20 = readPages[(r28 + -31540) >>> 12][((r28 + -31540) >>> 2) & 0x3ff]; + f21 = readPages[(r28 + -31544) >>> 12][((r28 + -31544) >>> 2) & 0x3ff]; f12 = f20; f13 = f21; - /* Next insn is delay slot */ - r31=0x385a0; - pc=0x38800; - run_38800(); return; - case 0x385a0: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x38510; - continue; - case 0x385ac: - f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))+(Double.longBitsToDouble(((f13&0xffffffffL) << 32) | (f12&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x3f9a0; + pc = 0x3fc00; + run_3fc00(); return; - case 0x385c8: + case 0x3f9a0: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3f910; + continue; + case 0x3f9ac: + f20 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL))) + + (Double.longBitsToDouble(((f13 & 0xffffffffL) << 32) | (f12 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x3f9c8: r5 = f14; r2 = 32783 << 16; r7 = r7 + 54; @@ -42892,40 +44996,49 @@ public final class AcmeCrossAssembler extends UnixRuntime { r7 = r7 << 20; r8 = r8 & r2; f2 = r5; - f0 = readPages[(r28+-31084)>>>12][((r28+-31084)>>>2)&0x3ff]; + f0 = readPages[(r28 + -31524) >>> 12][((r28 + -31524) >>> 2) & 0x3ff]; r4 = r7 | r8; f3 = r4; - f1 = readPages[(r28+-31088)>>>12][((r28+-31088)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x38510; + f1 = readPages[(r28 + -31528) >>> 12][((r28 + -31528) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x3f910; continue; - case 0x38600: - pc=0x38600; + case 0x3fa00: + pc = 0x3fa00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_38600() throws ExecutionException { /* 0x38600 - 0x38800 */ + + private final void run_3fa00() throws ExecutionException { /* 0x3fa00 - 0x3fc00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x38600: - case 0x38800: - pc=0x38800; + for (;;) { + switch (pc) { + case 0x3fa00: + case 0x3fc00: + pc = 0x3fc00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_38800() throws ExecutionException { /* 0x38800 - 0x38a00 */ + + private final void run_3fc00() throws ExecutionException { /* 0x3fc00 - 0x3fe00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x38800: + for (;;) { + switch (pc) { + case 0x3fc00: r6 = f15; r5 = 32768 << 16; r6 = r5 & r6; @@ -42937,7209 +45050,7107 @@ public final class AcmeCrossAssembler extends UnixRuntime { f0 = r3; r2 = r6 | r4; f1 = r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x38a00: - pc=0x38a00; + case 0x3fe00: + pc = 0x3fe00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_38a00() throws ExecutionException { /* 0x38a00 - 0x38c00 */ + + private final void run_3fe00() throws ExecutionException { /* 0x3fe00 - 0x40000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x38a00: + for (;;) { + switch (pc) { + case 0x3fe00: r5 = r4 + r0; r6 = r0 + r0; r4 = r0 + r0; r7 = r0 + r0; - /* Next insn is delay slot */ - pc=0x56a00; - run_56a00(); return; - case 0x38c00: - pc=0x38c00; + /* Next insn is delay slot */ + pc = 0x4dc00; + run_4dc00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x40000: + pc = 0x40000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_38c00() throws ExecutionException { /* 0x38c00 - 0x38e00 */ + + private final void run_40000() throws ExecutionException { /* 0x40000 - 0x40200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x38c00: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x40000: + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r31; return; - case 0x38e00: - pc=0x38e00; + case 0x40200: + pc = 0x40200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_38e00() throws ExecutionException { /* 0x38e00 - 0x39000 */ + + private final void run_40200() throws ExecutionException { /* 0x40200 - 0x40400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x38e00: + for (;;) { + switch (pc) { + case 0x40200: r29 = r29 + -24; r5 = r0 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; r16 = r4 + r0; - /* Next insn is delay slot */ - r31=0x38e1c; - pc=0x56c00; - run_56c00(); return; - case 0x38e1c: - r4 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; - r2 = readPages[(r4+60)>>>12][((r4+60)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x38e3c; + /* Next insn is delay slot */ + r31 = 0x4021c; + pc = 0x4de00; + run_4de00(); + return; + case 0x4021c: + r4 = readPages[(r28 + -31516) >>> 12][((r28 + -31516) >>> 2) & 0x3ff]; + r2 = readPages[(r4 + 60) >>> 12][((r4 + 60) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4023c; continue; } - /* Next insn is delay slot */ - pc=r2; - r31=0x38e3c; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x4023c; return; - case 0x38e3c: + case 0x4023c: r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x38e48; - pc=0x48800; - run_48800(); return; - case 0x38e48: - case 0x39000: - pc=0x39000; + /* Next insn is delay slot */ + r31 = 0x40248; + pc = 0x4d600; + run_4d600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x40248: + case 0x40400: + pc = 0x40400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_39000() throws ExecutionException { /* 0x39000 - 0x39200 */ + + private final void run_40400() throws ExecutionException { /* 0x40400 - 0x40600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x39000: + for (;;) { + switch (pc) { + case 0x40400: r29 = r29 + -32; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; r16 = r5 + r0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x3904c; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x4044c; continue; } r17 = r4 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3903c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4043c; continue; } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x39138; + r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x40538; continue; } - case 0x3903c: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x4043c: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3906c; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4046c; continue; } - case 0x3904c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + case 0x4044c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r2 = r0 + r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3906c: + case 0x4046c: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x3907c; - pc=0x39800; - run_39800(); return; - case 0x3907c: - r3 = readPages[(r16+44)>>>12][((r16+44)>>>2)&0x3ff]; - r18 = r2 + r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x390a4; - continue; - } - r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r3; - r31=0x3909c; + /* Next insn is delay slot */ + r31 = 0x4047c; + pc = 0x40c00; + run_40c00(); return; - case 0x3909c: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x39148; + case 0x4047c: + r3 = readPages[(r16 + 44) >>> 12][((r16 + 44) >>> 2) & 0x3ff]; + r18 = r2 + r0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x404a4; continue; } - case 0x390a4: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; + r4 = r17 + r0; + /* Next insn is delay slot */ + pc = r3; + r31 = 0x4049c; + return; + case 0x4049c: + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x40548; + continue; + } + case 0x404a4: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 & 128; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x39154; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x40554; continue; } - case 0x390b8: - r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x390e4; + case 0x404b8: + r5 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x404e4; continue; } r2 = r16 + 64; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x390e0; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x404e0; continue; } r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x390e0; - pc=0x3ca00; - run_3ca00(); return; - case 0x390e0: - writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; - case 0x390e4: - r5 = readPages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff]; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x39104; + /* Next insn is delay slot */ + r31 = 0x404e0; + pc = 0x42c00; + run_42c00(); + return; + case 0x404e0: + writePages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff] = r0; + case 0x404e4: + r5 = readPages[(r16 + 68) >>> 12][((r16 + 68) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x40504; continue; } r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x39100; - pc=0x3ca00; - run_3ca00(); return; - case 0x39100: - writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r0; - case 0x39104: - /* Next insn is delay slot */ - r31=0x3910c; - pc=0x3aa00; - run_3aa00(); return; - case 0x3910c: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r0&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x39118; - pc=0x3ac00; - run_3ac00(); return; - case 0x39118: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x40500; + pc = 0x42c00; + run_42c00(); + return; + case 0x40500: + writePages[(r16 + 68) >>> 12][((r16 + 68) >>> 2) & 0x3ff] = r0; + case 0x40504: + /* Next insn is delay slot */ + r31 = 0x4050c; + pc = 0x41800; + run_41800(); + return; + case 0x4050c: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r0 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + r31 = 0x40518; + pc = 0x41a00; + run_41a00(); + return; + case 0x40518: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r2 = r18 + r0; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x39138: - /* Next insn is delay slot */ - r31=0x39140; - pc=0x3a600; - run_3a600(); return; - case 0x39140: - /* Next insn is delay slot */ - pc=0x3903c; + case 0x40538: + /* Next insn is delay slot */ + r31 = 0x40540; + pc = 0x41400; + run_41400(); + return; + case 0x40540: + /* Next insn is delay slot */ + pc = 0x4043c; continue; - case 0x39148: + case 0x40548: r18 = r0 + -1; - /* Next insn is delay slot */ - pc=0x390a4; + /* Next insn is delay slot */ + pc = 0x404a4; continue; - case 0x39154: - r5 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; + case 0x40554: + r5 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x39164; - pc=0x3ca00; - run_3ca00(); return; - case 0x39164: - /* Next insn is delay slot */ - pc=0x390b8; + /* Next insn is delay slot */ + r31 = 0x40564; + pc = 0x42c00; + run_42c00(); + return; + case 0x40564: + /* Next insn is delay slot */ + pc = 0x404b8; continue; - case 0x39200: - pc=0x39200; + case 0x40600: + pc = 0x40600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_39200() throws ExecutionException { /* 0x39200 - 0x39400 */ + + private final void run_40600() throws ExecutionException { /* 0x40600 - 0x40800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x39200: + for (;;) { + switch (pc) { + case 0x40600: r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x39000; - run_39000(); return; - case 0x39400: - pc=0x39400; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x40400; + run_40400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x40800: + pc = 0x40800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_39400() throws ExecutionException { /* 0x39400 - 0x39600 */ + + private final void run_40800() throws ExecutionException { /* 0x40800 - 0x40a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x39400: - addr=r5+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + for (;;) { + switch (pc) { + case 0x40800: + addr = r5 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r29 = r29 + -40; r3 = r2 & 8; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; r19 = r4 + r0; r17 = r5 + r0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x39540; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x40940; continue; } - r3 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; + r3 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; r2 = r2 | 2048; - addr=r5+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r3 <= 0) { - /* Next insn is delay slot */ - pc=0x395f4; + addr = r5 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r3 <= 0) { + /* Next insn is delay slot */ + pc = 0x409f4; continue; } - case 0x39444: - r3 = readPages[(r17+40)>>>12][((r17+40)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3951c; + case 0x40844: + r3 = readPages[(r17 + 40) >>> 12][((r17 + 40) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4091c; continue; } r2 = r2 & 65535; r4 = r2 & 4096; - r16 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3960c; - run_39600(); return; + r16 = readPages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff]; + writePages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff] = r0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x40a0c; + run_40a00(); + return; } - r6 = readPages[(r17+80)>>>12][((r17+80)>>>2)&0x3ff]; - case 0x39470: + r6 = readPages[(r17 + 80) >>> 12][((r17 + 80) >>> 2) & 0x3ff]; + case 0x40870: r2 = r2 & 4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x394a4; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x408a4; continue; } - r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; + r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; r6 = r6 - r2; - r2 = readPages[(r17+48)>>>12][((r17+48)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x394a4; + r2 = readPages[(r17 + 48) >>> 12][((r17 + 48) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x408a4; continue; } - r2 = readPages[(r17+60)>>>12][((r17+60)>>>2)&0x3ff]; + r2 = readPages[(r17 + 60) >>> 12][((r17 + 60) >>> 2) & 0x3ff]; r6 = r6 - r2; - case 0x394a4: - r5 = readPages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff]; + case 0x408a4: + r5 = readPages[(r17 + 28) >>> 12][((r17 + 28) >>> 2) & 0x3ff]; r4 = r19 + r0; r7 = r0 + r0; - /* Next insn is delay slot */ - pc=r3; - r31=0x394b8; + /* Next insn is delay slot */ + pc = r3; + r31 = 0x408b8; return; - case 0x394b8: + case 0x408b8: r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x39644; - run_39600(); return; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x40a44; + run_40a00(); + return; } - case 0x394c4: - addr=r17+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x408c4: + addr = r17 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r3 = tmp; - r4 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; + r4 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; r3 = r3 & 63487; r3 = r3 << 16; r3 = r3 >> 16; - addr=r17+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r17 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r3 & 4096; - writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r0; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r4; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x396c8; - run_39600(); return; + writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r4; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x40ac8; + run_40a00(); + return; } - case 0x394f0: - r5 = readPages[(r17+48)>>>12][((r17+48)>>>2)&0x3ff]; - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r16; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x3951c; + case 0x408f0: + r5 = readPages[(r17 + 48) >>> 12][((r17 + 48) >>> 2) & 0x3ff]; + writePages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff] = r16; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x4091c; continue; } r2 = r17 + 64; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x39518; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x40918; continue; } r4 = r19 + r0; - /* Next insn is delay slot */ - r31=0x39518; - pc=0x3ca00; - run_3ca00(); return; - case 0x39518: - writePages[(r17+48)>>>12][((r17+48)>>>2)&0x3ff] = r0; - case 0x3951c: - r2 = r0 + r0; - case 0x39520: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x40918; + pc = 0x42c00; + run_42c00(); return; - case 0x39540: - r18 = readPages[(r5+16)>>>12][((r5+16)>>>2)&0x3ff]; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x3951c; + case 0x40918: + writePages[(r17 + 48) >>> 12][((r17 + 48) >>> 2) & 0x3ff] = r0; + case 0x4091c: + r2 = r0 + r0; + case 0x40920: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x40940: + r18 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; + if (r18 == r0) { + /* Next insn is delay slot */ + pc = 0x4091c; continue; } - r16 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; + r16 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; r2 = r2 & 3; r16 = r16 - r18; - writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r18; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x395e8; + writePages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff] = r18; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x409e8; continue; } - r2 = readPages[(r5+20)>>>12][((r5+20)>>>2)&0x3ff]; - case 0x39570: - writePages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff] = r2; - if(r16 > 0) { - /* Next insn is delay slot */ - pc=0x39594; + r2 = readPages[(r5 + 20) >>> 12][((r5 + 20) >>> 2) & 0x3ff]; + case 0x40970: + writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r2; + if (r16 > 0) { + /* Next insn is delay slot */ + pc = 0x40994; continue; } - /* Next insn is delay slot */ - pc=0x3951c; + /* Next insn is delay slot */ + pc = 0x4091c; continue; - case 0x39584: + case 0x40984: r16 = r16 - r2; r18 = r18 + r2; - if(r16 <= 0) { - /* Next insn is delay slot */ - pc=0x3951c; + if (r16 <= 0) { + /* Next insn is delay slot */ + pc = 0x4091c; continue; } - case 0x39594: - r2 = readPages[(r17+36)>>>12][((r17+36)>>>2)&0x3ff]; - r5 = readPages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff]; + case 0x40994: + r2 = readPages[(r17 + 36) >>> 12][((r17 + 36) >>> 2) & 0x3ff]; + r5 = readPages[(r17 + 28) >>> 12][((r17 + 28) >>> 2) & 0x3ff]; r4 = r19 + r0; r6 = r18 + r0; r7 = r16 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x395b0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x409b0; return; - case 0x395b0: - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x39584; + case 0x409b0: + if (r2 > 0) { + /* Next insn is delay slot */ + pc = 0x40984; continue; } - case 0x395b8: - addr=r17+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x409b8: + addr = r17 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; r2 = r2 | 64; - addr=r17+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + addr = r17 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r2 = r0 + -1; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x395e8: + case 0x409e8: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x39570; + /* Next insn is delay slot */ + pc = 0x40970; continue; - case 0x395f4: - r3 = readPages[(r5+60)>>>12][((r5+60)>>>2)&0x3ff]; - if(r3 > 0) { - /* Next insn is delay slot */ - pc=0x39444; + case 0x409f4: + r3 = readPages[(r5 + 60) >>> 12][((r5 + 60) >>> 2) & 0x3ff]; + if (r3 > 0) { + /* Next insn is delay slot */ + pc = 0x40844; continue; } - case 0x39600: - pc=0x39600; + case 0x40a00: + pc = 0x40a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_39600() throws ExecutionException { /* 0x39600 - 0x39800 */ + + private final void run_40a00() throws ExecutionException { /* 0x40a00 - 0x40c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x39600: - /* Next insn is delay slot */ - pc=0x3951c; - run_39400(); return; - case 0x3960c: - r5 = readPages[(r17+28)>>>12][((r17+28)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x40a00: + /* Next insn is delay slot */ + pc = 0x4091c; + run_40800(); + return; + case 0x40a0c: + r5 = readPages[(r17 + 28) >>> 12][((r17 + 28) >>> 2) & 0x3ff]; r6 = r0 + r0; r4 = r19 + r0; r7 = r0 + 1; - /* Next insn is delay slot */ - pc=r3; - r31=0x39624; + /* Next insn is delay slot */ + pc = r3; + r31 = 0x40a24; return; - case 0x39624: + case 0x40a24: r6 = r2 + r0; r2 = r0 + -1; - if(r6 == r2) { - /* Next insn is delay slot */ - pc=0x39690; + if (r6 == r2) { + /* Next insn is delay slot */ + pc = 0x40a90; continue; } - case 0x39634: - addr=r17+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x40a34: + addr = r17 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; - r3 = readPages[(r17+40)>>>12][((r17+40)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x39470; - run_39400(); return; - case 0x39644: - r3 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x394c4; - run_39400(); return; + r3 = readPages[(r17 + 40) >>> 12][((r17 + 40) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x40870; + run_40800(); + return; + case 0x40a44: + r3 = readPages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x408c4; + run_40800(); + return; } r2 = r0 + 29; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x3966c; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x40a6c; continue; } r2 = r0 + 22; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x395b8; - run_39400(); return; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x409b8; + run_40800(); + return; } - case 0x3966c: - addr=r17+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x40a6c: + addr = r17 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; - writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r0; + writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r0; r2 = r2 & 63487; - addr=r17+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x394f0; - run_39400(); return; - case 0x39690: - r2 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x39634; + addr = r17 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x408f0; + run_40800(); + return; + case 0x40a90: + r2 = readPages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x40a34; continue; } r3 = r0 + 29; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x396b8; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x40ab8; continue; } r3 = r0 + 22; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x395b8; - run_39400(); return; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x409b8; + run_40800(); + return; } - case 0x396b8: - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r16; + case 0x40ab8: + writePages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff] = r16; r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x39520; - run_39400(); return; - case 0x396c8: - writePages[(r17+80)>>>12][((r17+80)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x394f0; - run_39400(); return; - case 0x39800: - pc=0x39800; + /* Next insn is delay slot */ + pc = 0x40920; + run_40800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x40ac8: + writePages[(r17 + 80) >>> 12][((r17 + 80) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x408f0; + run_40800(); + return; + case 0x40c00: + pc = 0x40c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_39800() throws ExecutionException { /* 0x39800 - 0x39a00 */ + + private final void run_40c00() throws ExecutionException { /* 0x40c00 - 0x40e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x39800: + for (;;) { + switch (pc) { + case 0x40c00: r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; r16 = r4 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x39828; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x40c28; continue; } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x39868; + r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x40c68; continue; } - case 0x39828: - addr=r5+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x40c28: + addr = r5 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x39850; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x40c50; continue; } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r2 = r0 + r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x39850: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + case 0x40c50: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r4 = r16 + r0; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x39400; - run_39400(); return; - case 0x39868: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - r31=0x39874; - pc=0x3a600; - run_3a600(); return; - case 0x39874: - r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x39828; - continue; - case 0x39a00: - pc=0x39a00; + /* Next insn is delay slot */ + pc = 0x40800; + run_40800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x40c68: + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r5; + /* Next insn is delay slot */ + r31 = 0x40c74; + pc = 0x41400; + run_41400(); + return; + case 0x40c74: + r5 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x40c28; + continue; + case 0x40e00: + pc = 0x40e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_39a00() throws ExecutionException { /* 0x39a00 - 0x39c00 */ + + private final void run_40e00() throws ExecutionException { /* 0x40e00 - 0x41000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x39a00: + for (;;) { + switch (pc) { + case 0x40e00: r5 = r4 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x39a18; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x40e18; continue; } - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x39800; - run_39800(); return; - case 0x39a18: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x40c00; + run_40c00(); + return; + case 0x40e18: r5 = 4 << 16; - r4 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; - r5 = r5 + -26624; - /* Next insn is delay slot */ - pc=0x3d800; - run_3d800(); return; - case 0x39c00: - pc=0x39c00; + r4 = readPages[(r28 + -31516) >>> 12][((r28 + -31516) >>> 2) & 0x3ff]; + r5 = r5 + 3072; + /* Next insn is delay slot */ + pc = 0x43a00; + run_43a00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x41000: + pc = 0x41000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_39c00() throws ExecutionException { /* 0x39c00 - 0x39e00 */ + + private final void run_41000() throws ExecutionException { /* 0x41000 - 0x41200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x39c00: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x39e00: - pc=0x39e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_39e00() throws ExecutionException { /* 0x39e00 - 0x3a000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x39e00: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x3a000: - pc=0x3a000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_3a000() throws ExecutionException { /* 0x3a000 - 0x3a200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x3a000: + for (;;) { + switch (pc) { + case 0x41000: r5 = 4 << 16; - r5 = r5 + -28160; - /* Next insn is delay slot */ - pc=0x3d600; - run_3d600(); return; - case 0x3a200: - pc=0x3a200; + r5 = r5 + 1536; + /* Next insn is delay slot */ + pc = 0x43800; + run_43800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x41200: + pc = 0x41200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3a200() throws ExecutionException { /* 0x3a200 - 0x3a400 */ + + private final void run_41200() throws ExecutionException { /* 0x41200 - 0x41400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3a200: + for (;;) { + switch (pc) { + case 0x41200: r29 = r29 + -32; r2 = r5 << 2; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; r18 = r5 << 4; r18 = r18 - r2; r18 = r18 + r5; r18 = r18 << 3; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; r17 = r5 + r0; r5 = r18 + 12; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x3a238; - pc=0x3ec00; - run_3ec00(); return; - case 0x3a238: + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x41238; + pc = 0x44a00; + run_44a00(); + return; + case 0x41238: r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3a264; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x41264; continue; } r4 = r2 + 12; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r17; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r17; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r4; r5 = r0 + r0; r6 = r18 + r0; - /* Next insn is delay slot */ - r31=0x3a264; - pc=0x48fec; - run_48e00(); return; - case 0x3a264: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x41264; + pc = 0x4d7f0; + run_4d600(); + return; + case 0x41264: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r2 = r16 + r0; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3a400: - pc=0x3a400; + case 0x41400: + pc = 0x41400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3a400() throws ExecutionException { /* 0x3a400 - 0x3a600 */ + + private final void run_41400() throws ExecutionException { /* 0x41400 - 0x41600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3a400: - r5 = 4 << 16; - r4 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; - r5 = r5 + -28160; - /* Next insn is delay slot */ - pc=0x3d600; - run_3d600(); return; - case 0x3a600: - pc=0x3a600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_3a600() throws ExecutionException { /* 0x3a600 - 0x3a800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x3a600: - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x41400: + r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; r29 = r29 + -48; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; r17 = r4 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3a77c; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4157c; continue; } r2 = 4 << 16; - r2 = r2 + -24576; - writePages[(r4+60)>>>12][((r4+60)>>>2)&0x3ff] = r2; + r2 = r2 + 4096; + writePages[(r4 + 60) >>> 12][((r4 + 60) >>> 2) & 0x3ff] = r2; r2 = r0 + 3; - r16 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - writePages[(r4+740)>>>12][((r4+740)>>>2)&0x3ff] = r2; + r16 = readPages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff]; + writePages[(r4 + 740) >>> 12][((r4 + 740) >>> 2) & 0x3ff] = r2; r2 = r4 + 748; - writePages[(r4+744)>>>12][((r4+744)>>>2)&0x3ff] = r2; + writePages[(r4 + 744) >>> 12][((r4 + 744) >>> 2) & 0x3ff] = r2; r22 = r0 + 1; r2 = r0 + 4; r21 = 4 << 16; r20 = 4 << 16; r19 = 4 << 16; r18 = 4 << 16; - writePages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff] = r22; - writePages[(r4+736)>>>12][((r4+736)>>>2)&0x3ff] = r0; - r21 = r21 + 8704; + writePages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff] = r22; + writePages[(r4 + 736) >>> 12][((r4 + 736) >>> 2) & 0x3ff] = r0; + r21 = r21 + 30208; r4 = r16 + 92; - r20 = r20 + 9728; - r19 = r19 + 10240; - r18 = r18 + 10752; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r0; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r0; - addr=r16+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r0&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r0; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; + r20 = r20 + 30720; + r19 = r19 + 31232; + r18 = r18 + 31744; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r0; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff] = r0; + addr = r16 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r0 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; r5 = r0 + r0; r6 = r0 + 8; - /* Next insn is delay slot */ - r31=0x3a6bc; - pc=0x48fec; - run_48e00(); return; - case 0x3a6bc: - writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r16; - writePages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff] = r21; - writePages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff] = r20; - writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r19; - writePages[(r16+44)>>>12][((r16+44)>>>2)&0x3ff] = r18; - r16 = readPages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x414bc; + pc = 0x4d7f0; + run_4d600(); + return; + case 0x414bc: + writePages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff] = r16; + writePages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff] = r21; + writePages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff] = r20; + writePages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff] = r19; + writePages[(r16 + 44) >>> 12][((r16 + 44) >>> 2) & 0x3ff] = r18; + r16 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; r2 = r0 + 8; r4 = r16 + 92; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r0; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r0; - addr=r16+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r22&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r0; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r0; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff] = r0; + addr = r16 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r22 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; r5 = r0 + r0; r6 = r0 + 8; - /* Next insn is delay slot */ - r31=0x3a710; - pc=0x48fec; - run_48e00(); return; - case 0x3a710: - writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r16; - writePages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff] = r21; - writePages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff] = r20; - writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r19; - writePages[(r16+44)>>>12][((r16+44)>>>2)&0x3ff] = r18; - r16 = readPages[(r17+12)>>>12][((r17+12)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x41510; + pc = 0x4d7f0; + run_4d600(); + return; + case 0x41510: + writePages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff] = r16; + writePages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff] = r21; + writePages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff] = r20; + writePages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff] = r19; + writePages[(r16 + 44) >>> 12][((r16 + 44) >>> 2) & 0x3ff] = r18; + r16 = readPages[(r17 + 12) >>> 12][((r17 + 12) >>> 2) & 0x3ff]; r2 = r0 + 18; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 + 2; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r0; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; - writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r0; - addr=r16+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r0; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff] = r0; + addr = r16 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; r4 = r16 + 92; r5 = r0 + r0; r6 = r0 + 8; - /* Next insn is delay slot */ - r31=0x3a768; - pc=0x48fec; - run_48e00(); return; - case 0x3a768: - writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r16; - writePages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff] = r21; - writePages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff] = r20; - writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r19; - writePages[(r16+44)>>>12][((r16+44)>>>2)&0x3ff] = r18; - case 0x3a77c: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x41568; + pc = 0x4d7f0; + run_4d600(); + return; + case 0x41568: + writePages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff] = r16; + writePages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff] = r21; + writePages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff] = r20; + writePages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff] = r19; + writePages[(r16 + 44) >>> 12][((r16 + 44) >>> 2) & 0x3ff] = r18; + case 0x4157c: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3a800: - pc=0x3a800; + case 0x41600: + pc = 0x41600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3a800() throws ExecutionException { /* 0x3a800 - 0x3aa00 */ + + private final void run_41600() throws ExecutionException { /* 0x41600 - 0x41800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3a800: + for (;;) { + switch (pc) { + case 0x41600: r29 = r29 + -40; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - r18 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - r2 = readPages[(r18+56)>>>12][((r18+56)>>>2)&0x3ff]; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + r18 = readPages[(r28 + -31516) >>> 12][((r28 + -31516) >>> 2) & 0x3ff]; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + r2 = readPages[(r18 + 56) >>> 12][((r18 + 56) >>> 2) & 0x3ff]; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; r19 = r4 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3a900; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x41700; continue; } - case 0x3a82c: + case 0x4162c: r18 = r18 + 736; r17 = r0 + -1; - case 0x3a834: - r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; - r16 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; + case 0x41634: + r2 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + r16 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; r2 = r2 + -1; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x3a860; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x41660; continue; } - /* Next insn is delay slot */ - pc=0x3a8e4; + /* Next insn is delay slot */ + pc = 0x416e4; continue; - case 0x3a850: + case 0x41650: r2 = r2 + -1; r16 = r16 + 104; - if(r2 == r17) { - /* Next insn is delay slot */ - pc=0x3a8e4; + if (r2 == r17) { + /* Next insn is delay slot */ + pc = 0x416e4; continue; } - case 0x3a860: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x41660: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3a850; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x41650; continue; } r2 = r0 + -1; - addr=r16+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r16 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 + 1; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r0; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r0; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r0; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; r4 = r16 + 92; r5 = r0 + r0; r6 = r0 + 8; - /* Next insn is delay slot */ - r31=0x3a8b0; - pc=0x48fec; - run_48e00(); return; - case 0x3a8b0: - writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; - writePages[(r16+52)>>>12][((r16+52)>>>2)&0x3ff] = r0; - writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r0; - writePages[(r16+72)>>>12][((r16+72)>>>2)&0x3ff] = r0; - r2 = r16 + r0; - case 0x3a8c4: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x416b0; + pc = 0x4d7f0; + run_4d600(); return; - case 0x3a8e4: - r2 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3a914; + case 0x416b0: + writePages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 52) >>> 12][((r16 + 52) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 68) >>> 12][((r16 + 68) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 72) >>> 12][((r16 + 72) >>> 2) & 0x3ff] = r0; + r2 = r16 + r0; + case 0x416c4: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r29 = r29 + 40; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x416e4: + r2 = readPages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x41714; continue; } - case 0x3a8f4: + case 0x416f4: r18 = r2 + r0; - /* Next insn is delay slot */ - pc=0x3a834; + /* Next insn is delay slot */ + pc = 0x41634; continue; - case 0x3a900: + case 0x41700: r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x3a90c; - pc=0x3a600; - run_3a600(); return; - case 0x3a90c: - /* Next insn is delay slot */ - pc=0x3a82c; + /* Next insn is delay slot */ + r31 = 0x4170c; + pc = 0x41400; + run_41400(); + return; + case 0x4170c: + /* Next insn is delay slot */ + pc = 0x4162c; continue; - case 0x3a914: + case 0x41714: r4 = r19 + r0; r5 = r0 + 4; - /* Next insn is delay slot */ - r31=0x3a924; - pc=0x3a200; - run_3a200(); return; - case 0x3a924: - writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3a8f4; + /* Next insn is delay slot */ + r31 = 0x41724; + pc = 0x41200; + run_41200(); + return; + case 0x41724: + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x416f4; continue; } r2 = r0 + 12; - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; + writePages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff] = r2; r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3a8c4; + /* Next insn is delay slot */ + pc = 0x416c4; continue; - case 0x3aa00: - pc=0x3aa00; + case 0x41800: + pc = 0x41800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3aa00() throws ExecutionException { /* 0x3aa00 - 0x3ac00 */ + + private final void run_41800() throws ExecutionException { /* 0x41800 - 0x41a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3aa00: - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x41800: + /* Next insn is delay slot */ + pc = r31; return; - case 0x3ac00: - pc=0x3ac00; + case 0x41a00: + pc = 0x41a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3ac00() throws ExecutionException { /* 0x3ac00 - 0x3ae00 */ + + private final void run_41a00() throws ExecutionException { /* 0x41a00 - 0x41c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3ac00: - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x41a00: + /* Next insn is delay slot */ + pc = r31; return; - case 0x3ae00: - pc=0x3ae00; + case 0x41c00: + pc = 0x41c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3ae00() throws ExecutionException { /* 0x3ae00 - 0x3b000 */ + + private final void run_41c00() throws ExecutionException { /* 0x41c00 - 0x41e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3ae00: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x3b000: - pc=0x3b000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_3b000() throws ExecutionException { /* 0x3b000 - 0x3b200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x3b000: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x3b200: - pc=0x3b200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_3b200() throws ExecutionException { /* 0x3b200 - 0x3b400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x3b200: - r5 = 4 << 16; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r5 + -25600; - /* Next insn is delay slot */ - pc=0x3d600; - run_3d600(); return; - case 0x3b400: - pc=0x3b400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_3b400() throws ExecutionException { /* 0x3b400 - 0x3b600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x3b400: - r5 = 4 << 16; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r5 + -25088; - /* Next insn is delay slot */ - pc=0x3d600; - run_3d600(); return; - case 0x3b600: - pc=0x3b600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_3b600() throws ExecutionException { /* 0x3b600 - 0x3b800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x3b600: + for (;;) { + switch (pc) { + case 0x41c00: r29 = r29 + -48; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r19; r19 = r5 + r0; r5 = r6 + r0; r6 = r29 + 16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; r18 = r4 + r0; - /* Next insn is delay slot */ - r31=0x3b630; - pc=0x59600; - run_59600(); return; - case 0x3b630: + /* Next insn is delay slot */ + r31 = 0x41c30; + pc = 0x50400; + run_50400(); + return; + case 0x41c30: r17 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3b6f4; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x41cf4; continue; } r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x3b648; - pc=0x3a800; - run_3a800(); return; - case 0x3b648: + /* Next insn is delay slot */ + r31 = 0x41c48; + pc = 0x41600; + run_41600(); + return; + case 0x41c48: r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3b6f4; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x41cf4; continue; } - r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + r6 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r4 = r18 + r0; r5 = r19 + r0; r7 = r0 + 438; - /* Next insn is delay slot */ - r31=0x3b66c; - pc=0x48820; - run_48800(); return; - case 0x3b66c: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x3b6e0; - continue; - } - addr=r16+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = 4 << 16; - r2 = r2 + 8704; - writePages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff] = r2; - r2 = 4 << 16; - r2 = r2 + 9728; - writePages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff] = r2; - r2 = 4 << 16; - r2 = r2 + 10240; - writePages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff] = r2; - r2 = 4 << 16; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r17&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r2 + 10752; - r17 = r17 & 256; - writePages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff] = r16; - writePages[(r16+44)>>>12][((r16+44)>>>2)&0x3ff] = r2; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x3b718; - continue; - } - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r2 = r16 + r0; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x41c6c; + pc = 0x4d610; + run_4d600(); return; - case 0x3b6e0: - /* Next insn is delay slot */ - r31=0x3b6e8; - pc=0x3aa00; - run_3aa00(); return; - case 0x3b6e8: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r0&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x3b6f4; - pc=0x3ac00; - run_3ac00(); return; - case 0x3b6f4: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + case 0x41c6c: + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x41ce0; + continue; + } + addr = r16 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = 4 << 16; + r2 = r2 + 30208; + writePages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff] = r2; + r2 = 4 << 16; + r2 = r2 + 30720; + writePages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff] = r2; + r2 = 4 << 16; + r2 = r2 + 31232; + writePages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff] = r2; + r2 = 4 << 16; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r17 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = r2 + 31744; + r17 = r17 & 256; + writePages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff] = r16; + writePages[(r16 + 44) >>> 12][((r16 + 44) >>> 2) & 0x3ff] = r2; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x41d18; + continue; + } + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = r16 + r0; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x41ce0: + /* Next insn is delay slot */ + r31 = 0x41ce8; + pc = 0x41800; + run_41800(); + return; + case 0x41ce8: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r0 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + r31 = 0x41cf4; + pc = 0x41a00; + run_41a00(); + return; + case 0x41cf4: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r2 = r0 + r0; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3b718: + case 0x41d18: r4 = r18 + r0; r5 = r16 + r0; r6 = r0 + r0; r7 = r0 + 2; - /* Next insn is delay slot */ - r31=0x3b730; - pc=0x3ce00; - run_3ce00(); return; - case 0x3b730: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x41d30; + pc = 0x43000; + run_43000(); + return; + case 0x41d30: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r2 = r16 + r0; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3b800: - pc=0x3b800; + case 0x41e00: + pc = 0x41e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3b800() throws ExecutionException { /* 0x3b800 - 0x3ba00 */ + + private final void run_41e00() throws ExecutionException { /* 0x41e00 - 0x42000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3b800: + for (;;) { + switch (pc) { + case 0x41e00: r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r6 = r5 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x3b600; - run_3b600(); return; - case 0x3ba00: - pc=0x3ba00; + /* Next insn is delay slot */ + pc = 0x41c00; + run_41c00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x42000: + pc = 0x42000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3ba00() throws ExecutionException { /* 0x3ba00 - 0x3bc00 */ + + private final void run_42000() throws ExecutionException { /* 0x42000 - 0x42200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3ba00: - r29 = r29 + -32; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r7; - r7 = r29 + 44; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x3ba1c; - pc=0x45c00; - run_45c00(); return; - case 0x3ba1c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x3bc00: - pc=0x3bc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_3bc00() throws ExecutionException { /* 0x3bc00 - 0x3be00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x3bc00: + for (;;) { + switch (pc) { + case 0x42000: r29 = r29 + -32; r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r6; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r7; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r6; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r7; r6 = r5 + r0; r7 = r29 + 40; r5 = r2 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x3bc30; - pc=0x45c00; - run_45c00(); return; - case 0x3bc30: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r7; + /* Next insn is delay slot */ + r31 = 0x42030; + pc = 0x4ae00; + run_4ae00(); + return; + case 0x42030: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3be00: - pc=0x3be00; + case 0x42200: + pc = 0x42200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3be00() throws ExecutionException { /* 0x3be00 - 0x3c000 */ + + private final void run_42200() throws ExecutionException { /* 0x42200 - 0x42400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3be00: + for (;;) { + switch (pc) { + case 0x42200: r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; r16 = r4 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3be40; - continue; - } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3be40; - continue; - } - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x3be38; - pc=0x3a600; - run_3a600(); return; - case 0x3be38: - r6 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - case 0x3be40: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r4 = r16 + r0; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x3fe00; - run_3fe00(); return; - case 0x3c000: - pc=0x3c000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_3c000() throws ExecutionException { /* 0x3c000 - 0x3c200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x3c000: - r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - r16 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; r6 = r5 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3c05c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4225c; continue; } - r3 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3c044; + r3 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x42244; continue; } - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - r31=0x3c03c; - pc=0x3a600; - run_3a600(); return; - case 0x3c03c: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - case 0x3c044: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r5; + /* Next insn is delay slot */ + r31 = 0x4223c; + pc = 0x41400; + run_41400(); + return; + case 0x4223c: + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r6 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + case 0x42244: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r5 = r16 + r0; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x3fe00; - run_3fe00(); return; - case 0x3c05c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x45c00; + run_45c00(); + return; + case 0x4225c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r5 = r16 + r0; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r4 = r0 + r0; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x3fe00; - run_3fe00(); return; - case 0x3c200: - pc=0x3c200; + /* Next insn is delay slot */ + pc = 0x45c00; + run_45c00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x42400: + pc = 0x42400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3c200() throws ExecutionException { /* 0x3c200 - 0x3c400 */ + + private final void run_42400() throws ExecutionException { /* 0x42400 - 0x42600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3c200: - { long hilo = (r7) * r6; hi = (int) (hilo >>> 32); lo = (int) hilo; } + for (;;) { + switch (pc) { + case 0x42400: { + long hilo = (long) (r7) * ((long) r6); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r29 = r29 + -64; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r23; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r17; r21 = lo; r22 = r6 + r0; r23 = r7 + r0; - r16 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x3c380; + r16 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + if (r21 == r0) { + /* Next insn is delay slot */ + pc = 0x42580; continue; } r20 = r4 + r0; r18 = r5 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3c268; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x42468; continue; } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3c4b8; - run_3c400(); return; + r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x426b8; + run_42600(); + return; } - case 0x3c268: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x42468: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x3c29c; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4249c; continue; } - case 0x3c280: - r4 = readPages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff]; + case 0x42480: + r4 = readPages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff]; r2 = r3 | 8192; r3 = r0 + -8193; r3 = r4 & r3; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r3; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff] = r3; r2 = r2 & 65535; - case 0x3c29c: - r17 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - if(r17 < 0) { - /* Next insn is delay slot */ - pc=0x3c3a8; + case 0x4249c: + r17 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + if (r17 < 0) { + /* Next insn is delay slot */ + pc = 0x425a8; continue; } r2 = r2 & 2; r3 = r17 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3c3c0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x425c0; continue; } - case 0x3c2bc: + case 0x424bc: r19 = r21 + r0; - /* Next insn is delay slot */ - pc=0x3c308; + /* Next insn is delay slot */ + pc = 0x42508; continue; - case 0x3c2c8: + case 0x424c8: r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x3c2d4; - pc=0x48fdc; - run_48e00(); return; - case 0x3c2d4: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x424d4; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x424d4: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r4 = r20 + r0; r2 = r2 + r17; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; r5 = r16 + r0; r18 = r18 + r17; r19 = r19 - r17; - /* Next insn is delay slot */ - r31=0x3c2f8; - pc=0x41200; - run_41200(); return; - case 0x3c2f8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3c38c; + /* Next insn is delay slot */ + r31 = 0x424f8; + pc = 0x46e00; + run_46e00(); + return; + case 0x424f8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4258c; continue; } - r17 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - case 0x3c308: + r17 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + case 0x42508: r3 = ((r17 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; r4 = r18 + r0; - r5 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3c2c8; + r5 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x424c8; continue; } r6 = r19 + r0; - /* Next insn is delay slot */ - r31=0x3c328; - pc=0x48fdc; - run_48e00(); return; - case 0x3c328: - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = r2 - r19; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r19 = r2 + r19; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r19; - case 0x3c348: - r2 = r23 + r0; - case 0x3c34c: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x42528; + pc = 0x4d7e0; + run_4d600(); return; - case 0x3c380: + case 0x42528: + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r2 = r2 - r19; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r19 = r2 + r19; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r19; + case 0x42548: + r2 = r23 + r0; + case 0x4254c: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 64; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x42580: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3c34c; + /* Next insn is delay slot */ + pc = 0x4254c; continue; - case 0x3c38c: + case 0x4258c: r2 = r21 - r19; - if(r22 != r0) { - /* Next insn is delay slot */ - if(r22!=0) { - hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); + if (r22 != r0) { + /* Next insn is delay slot */ + if (r22 != 0) { + hi = (int) ((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); + lo = (int) ((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } - pc=0x3c39c; + pc = 0x4259c; continue; } - if(r22!=0) { - hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); + if (r22 != 0) { + hi = (int) ((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); + lo = (int) ((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } throw new ExecutionException("Break"); - case 0x3c39c: + case 0x4259c: r2 = lo; - /* Next insn is delay slot */ - pc=0x3c34c; + /* Next insn is delay slot */ + pc = 0x4254c; continue; - case 0x3c3a8: + case 0x425a8: r2 = r2 & 2; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; r3 = r0 + r0; r17 = r0 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3c2bc; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x424bc; continue; } - case 0x3c3c0: + case 0x425c0: r2 = ((r21 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; r17 = r3 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3c3d4; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x425d4; continue; } r17 = r21 + r0; - case 0x3c3d4: - r5 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + case 0x425d4: + r5 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r4 = r18 + r0; r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x3c3e8; - pc=0x48fdc; - run_48e00(); return; - case 0x3c3e8: - r19 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x425e8; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x425e8: + r19 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r5 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; r19 = r19 + r17; r2 = r2 - r17; r18 = r18 + r17; - case 0x3c400: - pc=0x3c400; + case 0x42600: + pc = 0x42600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3c400() throws ExecutionException { /* 0x3c400 - 0x3c600 */ + + private final void run_42600() throws ExecutionException { /* 0x42600 - 0x42800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3c400: - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r19; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; + for (;;) { + switch (pc) { + case 0x42600: + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r19; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; r17 = r21 - r17; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x3c4e0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x426e0; continue; } - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x3c348; - run_3c200(); return; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x42548; + run_42400(); + return; } r2 = r16 + 64; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x3c438; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x42638; continue; } r4 = r20 + r0; - /* Next insn is delay slot */ - r31=0x3c434; - pc=0x3ca00; - run_3ca00(); return; - case 0x3c434: - r19 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - case 0x3c438: - writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; - case 0x3c43c: - r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - r30 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x3c458; + /* Next insn is delay slot */ + r31 = 0x42634; + pc = 0x42c00; + run_42c00(); + return; + case 0x42634: + r19 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + case 0x42638: + writePages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff] = r0; + case 0x4263c: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r30 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x42658; continue; - case 0x3c450: - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x3c348; - run_3c200(); return; + case 0x42650: + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x42548; + run_42400(); + return; } - case 0x3c458: - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r18; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r17; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; + case 0x42658: + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r18; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r18; r4 = r20 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x3c474; - pc=0x41200; - run_41200(); return; - case 0x3c474: - r4 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r30; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r3; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r19; + /* Next insn is delay slot */ + r31 = 0x42674; + pc = 0x46e00; + run_46e00(); + return; + case 0x42674: + r4 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = r30; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r19; r17 = r17 - r4; r18 = r18 + r4; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3c450; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x42650; continue; } r2 = r21 - r17; - if(r22 != r0) { - /* Next insn is delay slot */ - if(r22!=0) { - hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); + if (r22 != r0) { + /* Next insn is delay slot */ + if (r22 != 0) { + hi = (int) ((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); + lo = (int) ((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } - pc=0x3c4ac; + pc = 0x426ac; continue; } - if(r22!=0) { - hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); + if (r22 != 0) { + hi = (int) ((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); + lo = (int) ((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } throw new ExecutionException("Break"); - case 0x3c4ac: + case 0x426ac: r2 = lo; - /* Next insn is delay slot */ - pc=0x3c34c; - run_3c200(); return; - case 0x3c4b8: - /* Next insn is delay slot */ - r31=0x3c4c0; - pc=0x3a600; - run_3a600(); return; - case 0x3c4c0: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + /* Next insn is delay slot */ + pc = 0x4254c; + run_42400(); + return; + case 0x426b8: + /* Next insn is delay slot */ + r31 = 0x426c0; + pc = 0x41400; + run_41400(); + return; + case 0x426c0: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x3c29c; - run_3c200(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4249c; + run_42400(); + return; } - /* Next insn is delay slot */ - pc=0x3c280; - run_3c200(); return; - case 0x3c4e0: - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x3c43c; + /* Next insn is delay slot */ + pc = 0x42480; + run_42400(); + return; + case 0x426e0: + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x4263c; continue; } - /* Next insn is delay slot */ - pc=0x3c348; - run_3c200(); return; - case 0x3c600: - pc=0x3c600; + /* Next insn is delay slot */ + pc = 0x42548; + run_42400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x42800: + pc = 0x42800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3c600() throws ExecutionException { /* 0x3c600 - 0x3c800 */ + + private final void run_42800() throws ExecutionException { /* 0x42800 - 0x42a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3c600: + for (;;) { + switch (pc) { + case 0x42800: r29 = r29 + -32; r8 = r4 + r0; r3 = r5 + r0; r2 = r6 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r5 = r8 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r7; r6 = r3 + r0; r7 = r2 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x3c630; - pc=0x3c200; - run_3c200(); return; - case 0x3c630: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x42830; + pc = 0x42400; + run_42400(); + return; + case 0x42830: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3c800: - pc=0x3c800; + case 0x42a00: + pc = 0x42a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3c800() throws ExecutionException { /* 0x3c800 - 0x3ca00 */ + + private final void run_42a00() throws ExecutionException { /* 0x42a00 - 0x42c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3c800: + for (;;) { + switch (pc) { + case 0x42a00: r29 = r29 + -40; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - r18 = 7 << 16; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + r18 = 6 << 16; r17 = r4 + r0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; r20 = r5 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r18 = r18 + 11104; - /* Next insn is delay slot */ - r31=0x3c834; - pc=0x48b80; - run_48a00(); return; - case 0x3c834: + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + r18 = r18 + -16464; + /* Next insn is delay slot */ + r31 = 0x42a34; + pc = 0x4d7d0; + run_4d600(); + return; + case 0x42a34: r4 = r17 + r0; r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x3c844; - pc=0x3f600; - run_3f600(); return; - case 0x3c844: - r2 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; - r19 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x42a44; + pc = 0x45600; + run_45600(); + return; + case 0x42a44: + r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + r19 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; r2 = r0 + -4; r19 = r19 & r2; r5 = r19 - r20; r5 = r5 + -17; r5 = r5 + r16; - if(r16 != r0) { - /* Next insn is delay slot */ - if(r16!=0) { - hi = (int)((r5 & 0xffffffffL) % (r16 & 0xffffffffL)); lo = (int)((r5 & 0xffffffffL) / (r16 & 0xffffffffL)); + if (r16 != r0) { + /* Next insn is delay slot */ + if (r16 != 0) { + hi = (int) ((r5 & 0xffffffffL) % (r16 & 0xffffffffL)); + lo = (int) ((r5 & 0xffffffffL) / (r16 & 0xffffffffL)); } - pc=0x3c870; + pc = 0x42a70; continue; } - if(r16!=0) { - hi = (int)((r5 & 0xffffffffL) % (r16 & 0xffffffffL)); lo = (int)((r5 & 0xffffffffL) / (r16 & 0xffffffffL)); + if (r16 != 0) { + hi = (int) ((r5 & 0xffffffffL) % (r16 & 0xffffffffL)); + lo = (int) ((r5 & 0xffffffffL) / (r16 & 0xffffffffL)); } throw new ExecutionException("Break"); - case 0x3c870: + case 0x42a70: r20 = lo; - r20 = r20 + -1; - { long hilo = (r20) * r16; hi = (int) (hilo >>> 32); lo = (int) hilo; } + r20 = r20 + -1; { + long hilo = (long) (r20) * ((long) r16); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r20 = lo; r16 = r20 < r16 ? 1 : 0; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x3c8b4; + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x42ab4; continue; } r4 = r17 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x3c8a0; - pc=0x48920; - run_48800(); return; - case 0x3c8a0: - r3 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x42aa0; + pc = 0x4d710; + run_4d600(); + return; + case 0x42aa0: + r3 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; r3 = r3 + r19; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x3c8e8; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x42ae8; continue; } - case 0x3c8b4: + case 0x42ab4: r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x3c8c0; - pc=0x3f800; - run_3f800(); return; - case 0x3c8c0: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x42ac0; + pc = 0x45800; + run_45800(); + return; + case 0x42ac0: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r2 = r0 + r0; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3c8e8: + case 0x42ae8: r4 = r17 + r0; r5 = r0 - r20; - /* Next insn is delay slot */ - r31=0x3c8f8; - pc=0x48920; - run_48800(); return; - case 0x3c8f8: + /* Next insn is delay slot */ + r31 = 0x42af8; + pc = 0x4d710; + run_4d600(); + return; + case 0x42af8: r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x3c958; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x42b58; continue; } - r2 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; + r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; r19 = r19 - r20; r19 = r19 | 1; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r19; - r2 = 7 << 16; - r3 = readPages[(r2+17968)>>>12][((r2+17968)>>>2)&0x3ff]; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r19; + r2 = 6 << 16; + r3 = readPages[(r2 + -10368) >>> 12][((r2 + -10368) >>> 2) & 0x3ff]; r4 = r17 + r0; r20 = r3 - r20; - writePages[(r2+17968)>>>12][((r2+17968)>>>2)&0x3ff] = r20; - /* Next insn is delay slot */ - r31=0x3c930; - pc=0x3f800; - run_3f800(); return; - case 0x3c930: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + writePages[(r2 + -10368) >>> 12][((r2 + -10368) >>> 2) & 0x3ff] = r20; + /* Next insn is delay slot */ + r31 = 0x42b30; + pc = 0x45800; + run_45800(); + return; + case 0x42b30: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r2 = r0 + 1; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3c958: + case 0x42b58: r4 = r17 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x3c968; - pc=0x48920; - run_48800(); return; - case 0x3c968: - r3 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x42b68; + pc = 0x4d710; + run_4d600(); + return; + case 0x42b68: + r3 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; r4 = r2 - r3; r5 = r4 < 16 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x3c8b4; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x42ab4; continue; } - r5 = readPages[(r28+-31068)>>>12][((r28+-31068)>>>2)&0x3ff]; + r5 = readPages[(r28 + -31508) >>> 12][((r28 + -31508) >>> 2) & 0x3ff]; r4 = r4 | 1; r2 = r2 - r5; - r5 = 7 << 16; - writePages[(r5+17968)>>>12][((r5+17968)>>>2)&0x3ff] = r2; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x3c8b4; + r5 = 6 << 16; + writePages[(r5 + -10368) >>> 12][((r5 + -10368) >>> 2) & 0x3ff] = r2; + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x42ab4; continue; - case 0x3ca00: - pc=0x3ca00; + case 0x42c00: + pc = 0x42c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3ca00() throws ExecutionException { /* 0x3ca00 - 0x3cc00 */ + + private final void run_42c00() throws ExecutionException { /* 0x42c00 - 0x42e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3ca00: + for (;;) { + switch (pc) { + case 0x42c00: r29 = r29 + -32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; r16 = r5 + r0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x3cba0; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x42da0; continue; } r17 = r4 + r0; - /* Next insn is delay slot */ - r31=0x3ca28; - pc=0x3f600; - run_3f600(); return; - case 0x3ca28: - r8 = readPages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x42c28; + pc = 0x45600; + run_45600(); + return; + case 0x42c28: + r8 = readPages[(r16 + -4) >>> 12][((r16 + -4) >>> 2) & 0x3ff]; r2 = r0 + -2; r6 = r16 + -8; r2 = r8 & r2; r3 = r6 + r2; - r5 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r7 = 7 << 16; + r5 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + r7 = 6 << 16; r4 = r0 + -4; - r7 = r7 + 11104; + r7 = r7 + -16464; r5 = r5 & r4; - r4 = readPages[(r7+8)>>>12][((r7+8)>>>2)&0x3ff]; - if(r4 == r3) { - /* Next insn is delay slot */ - pc=0x3cc44; - run_3cc00(); return; + r4 = readPages[(r7 + 8) >>> 12][((r7 + 8) >>> 2) & 0x3ff]; + if (r4 == r3) { + /* Next insn is delay slot */ + pc = 0x42e44; + run_42e00(); + return; } r8 = r8 & 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r5; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x3cb64; + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r5; + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x42d64; continue; } r4 = r0 + r0; - case 0x3ca74: + case 0x42c74: r8 = r3 + r5; - r8 = readPages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff]; + r8 = readPages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff]; r8 = r8 & 1; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x3caac; + if (r8 != r0) { + /* Next insn is delay slot */ + pc = 0x42cac; continue; } r2 = r2 + r5; - r5 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3cc0c; - run_3cc00(); return; + r5 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x42e0c; + run_42e00(); + return; } - case 0x3ca9c: - r3 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - writePages[(r5+12)>>>12][((r5+12)>>>2)&0x3ff] = r3; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r5; - case 0x3caac: + case 0x42c9c: + r3 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + writePages[(r5 + 12) >>> 12][((r5 + 12) >>> 2) & 0x3ff] = r3; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r5; + case 0x42cac: r3 = r2 | 1; - writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r3; + writePages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff] = r3; r3 = r6 + r2; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x3cb48; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x42d48; continue; } - r3 = (r2&0xffffffffL) < (512&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3cbb8; + r3 = (r2 & 0xffffffffL) < (512 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x42db8; continue; } r3 = r2 >>> 9; - r4 = (r3&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3ccb8; - run_3cc00(); return; + r4 = (r3 & 0xffffffffL) < (5 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x42eb8; + run_42e00(); + return; } r4 = r2 >>> 6; r4 = r4 + 56; r8 = r4 << 1; - case 0x3caec: + case 0x42cec: r8 = r8 << 2; r8 = r7 + r8; - r3 = readPages[(r8+8)>>>12][((r8+8)>>>2)&0x3ff]; - if(r3 == r8) { - /* Next insn is delay slot */ - pc=0x3ccd4; - run_3cc00(); return; + r3 = readPages[(r8 + 8) >>> 12][((r8 + 8) >>> 2) & 0x3ff]; + if (r3 == r8) { + /* Next insn is delay slot */ + pc = 0x42ed4; + run_42e00(); + return; } r4 = r0 + -4; - case 0x3cb08: - r5 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; + case 0x42d08: + r5 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; r5 = r5 & r4; r5 = ((r2 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x3cb30; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x42d30; continue; } - r3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r8 != r3) { - /* Next insn is delay slot */ - pc=0x3cb08; + r3 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; + if (r8 != r3) { + /* Next insn is delay slot */ + pc = 0x42d08; continue; } - case 0x3cb30: - r2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - case 0x3cb38: - writePages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff] = r2; - writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = r3; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r6; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r6; - case 0x3cb48: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + case 0x42d30: + r2 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + case 0x42d38: + writePages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff] = r2; + writePages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r6; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r6; + case 0x42d48: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r4 = r17 + r0; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x3f800; - run_3f800(); return; - case 0x3cb64: - r4 = readPages[(r16+-8)>>>12][((r16+-8)>>>2)&0x3ff]; - r8 = 7 << 16; + /* Next insn is delay slot */ + pc = 0x45800; + run_45800(); + return; + case 0x42d64: + r4 = readPages[(r16 + -8) >>> 12][((r16 + -8) >>> 2) & 0x3ff]; + r8 = 6 << 16; r6 = r6 - r4; r2 = r2 + r4; - r4 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; - r8 = r8 + 11112; - if(r4 == r8) { - /* Next insn is delay slot */ - pc=0x3ccac; - run_3cc00(); return; + r4 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + r8 = r8 + -16456; + if (r4 == r8) { + /* Next insn is delay slot */ + pc = 0x42eac; + run_42e00(); + return; } - r8 = readPages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff]; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = r8; - writePages[(r8+8)>>>12][((r8+8)>>>2)&0x3ff] = r4; + r8 = readPages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff]; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r8; + writePages[(r8 + 8) >>> 12][((r8 + 8) >>> 2) & 0x3ff] = r4; r4 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3ca74; + /* Next insn is delay slot */ + pc = 0x42c74; continue; - case 0x3cba0: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + case 0x42da0: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3cbb8: + case 0x42db8: r2 = r2 >>> 3; r3 = r2 >> 2; r4 = r0 + 1; - r3 = r4 << (r3&0x1f); - r4 = readPages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff]; + r3 = r4 << (r3 & 0x1f); + r4 = readPages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff]; r2 = r2 << 3; r3 = r3 | r4; - writePages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff] = r3; + writePages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff] = r3; r7 = r7 + r2; - r2 = readPages[(r7+8)>>>12][((r7+8)>>>2)&0x3ff]; - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r2 = readPages[(r7 + 8) >>> 12][((r7 + 8) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r4 = r17 + r0; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - writePages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff] = r7; - writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = r2; - writePages[(r7+8)>>>12][((r7+8)>>>2)&0x3ff] = r6; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r6; - case 0x3cc00: - pc=0x3cc00; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + writePages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff] = r7; + writePages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff] = r2; + writePages[(r7 + 8) >>> 12][((r7 + 8) >>> 2) & 0x3ff] = r6; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r6; + case 0x42e00: + pc = 0x42e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3cc00() throws ExecutionException { /* 0x3cc00 - 0x3ce00 */ + + private final void run_42e00() throws ExecutionException { /* 0x42e00 - 0x43000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3cc00: + for (;;) { + switch (pc) { + case 0x42e00: r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x3f800; - run_3f800(); return; - case 0x3cc0c: - r8 = 7 << 16; - r8 = r8 + 11112; - if(r5 != r8) { - /* Next insn is delay slot */ - pc=0x3ca9c; - run_3ca00(); return; + /* Next insn is delay slot */ + pc = 0x45800; + run_45800(); + return; + case 0x42e0c: + r8 = 6 << 16; + r8 = r8 + -16456; + if (r5 != r8) { + /* Next insn is delay slot */ + pc = 0x42c9c; + run_42c00(); + return; } r3 = r2 | 1; - writePages[(r7+20)>>>12][((r7+20)>>>2)&0x3ff] = r6; - writePages[(r7+16)>>>12][((r7+16)>>>2)&0x3ff] = r6; - writePages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff] = r5; - writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = r5; - writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r3; + writePages[(r7 + 20) >>> 12][((r7 + 20) >>> 2) & 0x3ff] = r6; + writePages[(r7 + 16) >>> 12][((r7 + 16) >>> 2) & 0x3ff] = r6; + writePages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff] = r5; + writePages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff] = r5; + writePages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff] = r3; r6 = r6 + r2; - writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x3cb48; - run_3ca00(); return; - case 0x3cc44: + writePages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x42d48; + run_42c00(); + return; + case 0x42e44: r8 = r8 & 1; r2 = r5 + r2; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x3cc78; + if (r8 != r0) { + /* Next insn is delay slot */ + pc = 0x42e78; continue; } - r3 = readPages[(r16+-8)>>>12][((r16+-8)>>>2)&0x3ff]; + r3 = readPages[(r16 + -8) >>> 12][((r16 + -8) >>> 2) & 0x3ff]; r6 = r6 - r3; - r4 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; + r4 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; r2 = r2 + r3; - r3 = readPages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff]; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = r3; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r4; - case 0x3cc78: - r5 = readPages[(r28+-31064)>>>12][((r28+-31064)>>>2)&0x3ff]; + r3 = readPages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff]; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r3; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r4; + case 0x42e78: + r5 = readPages[(r28 + -31504) >>> 12][((r28 + -31504) >>> 2) & 0x3ff]; r3 = r2 | 1; r2 = ((r2 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r3; - writePages[(r7+8)>>>12][((r7+8)>>>2)&0x3ff] = r6; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3cb48; - run_3ca00(); return; + writePages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff] = r3; + writePages[(r7 + 8) >>> 12][((r7 + 8) >>> 2) & 0x3ff] = r6; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x42d48; + run_42c00(); + return; } - r5 = readPages[(r28+-30640)>>>12][((r28+-30640)>>>2)&0x3ff]; + r5 = readPages[(r28 + -31276) >>> 12][((r28 + -31276) >>> 2) & 0x3ff]; r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x3cca4; - pc=0x3c800; - run_3c800(); return; - case 0x3cca4: - /* Next insn is delay slot */ - pc=0x3cb48; - run_3ca00(); return; - case 0x3ccac: + /* Next insn is delay slot */ + r31 = 0x42ea4; + pc = 0x42a00; + run_42a00(); + return; + case 0x42ea4: + /* Next insn is delay slot */ + pc = 0x42d48; + run_42c00(); + return; + case 0x42eac: r4 = r0 + 1; - /* Next insn is delay slot */ - pc=0x3ca74; - run_3ca00(); return; - case 0x3ccb8: - r4 = (r3&0xffffffffL) < (21&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3ccfc; + /* Next insn is delay slot */ + pc = 0x42c74; + run_42c00(); + return; + case 0x42eb8: + r4 = (r3 & 0xffffffffL) < (21 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x42efc; continue; } r4 = r3 + 91; r8 = r4 << 1; - /* Next insn is delay slot */ - pc=0x3caec; - run_3ca00(); return; - case 0x3ccd4: + /* Next insn is delay slot */ + pc = 0x42cec; + run_42c00(); + return; + case 0x42ed4: r2 = r0 + 1; r4 = r4 >> 2; - r4 = r2 << (r4&0x1f); - r2 = readPages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff]; + r4 = r2 << (r4 & 0x1f); + r2 = readPages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff]; r2 = r4 | r2; - writePages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff] = r2; + writePages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff] = r2; r2 = r3 + r0; - /* Next insn is delay slot */ - pc=0x3cb38; - run_3ca00(); return; - case 0x3ccfc: - r4 = (r3&0xffffffffL) < (85&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3cd1c; + /* Next insn is delay slot */ + pc = 0x42d38; + run_42c00(); + return; + case 0x42efc: + r4 = (r3 & 0xffffffffL) < (85 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x42f1c; continue; } r4 = r2 >>> 12; r4 = r4 + 110; r8 = r4 << 1; - /* Next insn is delay slot */ - pc=0x3caec; - run_3ca00(); return; - case 0x3cd1c: - r4 = (r3&0xffffffffL) < (341&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3cd3c; + /* Next insn is delay slot */ + pc = 0x42cec; + run_42c00(); + return; + case 0x42f1c: + r4 = (r3 & 0xffffffffL) < (341 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x42f3c; continue; } r4 = r2 >>> 15; r4 = r4 + 119; r8 = r4 << 1; - /* Next insn is delay slot */ - pc=0x3caec; - run_3ca00(); return; - case 0x3cd3c: - r3 = (r3&0xffffffffL) < (1365&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3cd5c; + /* Next insn is delay slot */ + pc = 0x42cec; + run_42c00(); + return; + case 0x42f3c: + r3 = (r3 & 0xffffffffL) < (1365 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x42f5c; continue; } r4 = r2 >>> 18; r4 = r4 + 124; r8 = r4 << 1; - /* Next insn is delay slot */ - pc=0x3caec; - run_3ca00(); return; - case 0x3cd5c: + /* Next insn is delay slot */ + pc = 0x42cec; + run_42c00(); + return; + case 0x42f5c: r8 = r0 + 252; r4 = r0 + 126; - /* Next insn is delay slot */ - pc=0x3caec; - run_3ca00(); return; - case 0x3ce00: - pc=0x3ce00; + /* Next insn is delay slot */ + pc = 0x42cec; + run_42c00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x43000: + pc = 0x43000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3ce00() throws ExecutionException { /* 0x3ce00 - 0x3d000 */ + + private final void run_43000() throws ExecutionException { /* 0x43000 - 0x43200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3ce00: + for (;;) { + switch (pc) { + case 0x43000: r29 = r29 + -120; - writePages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff] = r21; - writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r18; - writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r17; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r16; - writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r31; - writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r23; - writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = r22; - writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = r20; - writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = r19; + writePages[(r29 + 104) >>> 12][((r29 + 104) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 116) >>> 12][((r29 + 116) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 112) >>> 12][((r29 + 112) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 96) >>> 12][((r29 + 96) >>> 2) & 0x3ff] = r19; r17 = r4 + r0; r16 = r5 + r0; r21 = r6 + r0; r18 = r7 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3ce50; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x43050; continue; } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3d030; - run_3d000(); return; + r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x43230; + run_43200(); + return; } - case 0x3ce50: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x43050: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r3 = tmp; r2 = r0 + 264; r3 = r3 & 264; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x3d04c; - run_3d000(); return; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x4324c; + run_43200(); + return; } - case 0x3ce64: - r19 = readPages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff]; - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x3d388; - run_3d200(); return; + case 0x43064: + r19 = readPages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff]; + if (r19 == r0) { + /* Next insn is delay slot */ + pc = 0x43588; + run_43400(); + return; } r2 = r0 + 1; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x3cfc4; + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x431c4; continue; } r2 = r0 + 2; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x3ced4; + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x430d4; continue; } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x3ced4; + if (r18 == r0) { + /* Next insn is delay slot */ + pc = 0x430d4; continue; } r2 = r0 + 22; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - case 0x3ce9c: + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r2; + case 0x4309c: r20 = r0 + -1; - case 0x3cea0: - r31 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; + case 0x430a0: + r31 = readPages[(r29 + 116) >>> 12][((r29 + 116) >>> 2) & 0x3ff]; r2 = r20 + r0; - r23 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; - r22 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; - r21 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - r20 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; - r19 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r18 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r17 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r16 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; + r23 = readPages[(r29 + 112) >>> 12][((r29 + 112) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 104) >>> 12][((r29 + 104) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 96) >>> 12][((r29 + 96) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; r29 = r29 + 120; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3ced4: - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; + case 0x430d4: + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; r22 = r0 + r0; r20 = r0 + r0; - case 0x3cee0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3d324; - run_3d200(); return; + case 0x430e0: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x43524; + run_43400(); + return; } - case 0x3cee8: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x430e8: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 65535; r4 = r2 & 2074; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x3cf24; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x43124; continue; } r2 = r2 & 1024; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3d0b8; - run_3d000(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x432b8; + run_43200(); + return; } r2 = 4 << 16; - r2 = r2 + 10240; - if(r19 == r2) { - /* Next insn is delay slot */ - pc=0x3d064; - run_3d000(); return; + r2 = r2 + 31232; + if (r19 == r2) { + /* Next insn is delay slot */ + pc = 0x43264; + run_43200(); + return; } - case 0x3cf1c: + case 0x4311c: r3 = r3 | 2048; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x3cf24: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x43124: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x3cf34; - pc=0x39800; - run_39800(); return; - case 0x3cf34: + /* Next insn is delay slot */ + r31 = 0x43134; + pc = 0x40c00; + run_40c00(); + return; + case 0x43134: r20 = r2 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3ce9c; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4309c; continue; } - r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; + r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; r4 = r17 + r0; r6 = r21 + r0; r7 = r18 + r0; - /* Next insn is delay slot */ - pc=r19; - r31=0x3cf58; + /* Next insn is delay slot */ + pc = r19; + r31 = 0x43158; return; - case 0x3cf58: + case 0x43158: r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x3ce9c; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x4309c; continue; } - r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x3cf90; + r5 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x43190; continue; } r2 = r16 + 64; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x3cf8c; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x4318c; continue; } r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x3cf8c; - pc=0x3ca00; - run_3ca00(); return; - case 0x3cf8c: - writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; - case 0x3cf90: - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + /* Next insn is delay slot */ + r31 = 0x4318c; + pc = 0x42c00; + run_42c00(); + return; + case 0x4318c: + writePages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff] = r0; + case 0x43190: + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r4 = r16 + 92; r2 = r2 & 63455; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r5 = r0 + r0; r6 = r0 + 8; - /* Next insn is delay slot */ - r31=0x3cfbc; - pc=0x48fec; - run_48e00(); return; - case 0x3cfbc: - /* Next insn is delay slot */ - pc=0x3cea0; + /* Next insn is delay slot */ + r31 = 0x431bc; + pc = 0x4d7f0; + run_4d600(); + return; + case 0x431bc: + /* Next insn is delay slot */ + pc = 0x430a0; continue; - case 0x3cfc4: + case 0x431c4: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x3cfd4; - pc=0x39800; - run_39800(); return; - case 0x3cfd4: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + /* Next insn is delay slot */ + r31 = 0x431d4; + pc = 0x40c00; + run_40c00(); + return; + case 0x431d4: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r3 = r2 & 4096; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3d2e4; - run_3d200(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x434e4; + run_43400(); + return; } - r20 = readPages[(r16+80)>>>12][((r16+80)>>>2)&0x3ff]; - case 0x3cfec: + r20 = readPages[(r16 + 80) >>> 12][((r16 + 80) >>> 2) & 0x3ff]; + case 0x431ec: r3 = r2 & 4; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3d1a0; - run_3d000(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x433a0; + run_43200(); + return; } r2 = r2 & 8; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3d1c8; - run_3d000(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x433c8; + run_43200(); + return; } - case 0x3d000: - pc=0x3d000; + case 0x43200: + pc = 0x43200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3d000() throws ExecutionException { /* 0x3d000 - 0x3d200 */ + + private final void run_43200() throws ExecutionException { /* 0x43200 - 0x43400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3d000: - r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3d01c; + for (;;) { + switch (pc) { + case 0x43200: + r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4321c; continue; } r3 = r3 - r2; r20 = r20 + r3; - case 0x3d01c: + case 0x4321c: r21 = r21 + r20; r22 = r0 + 1; r18 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3cee0; - run_3ce00(); return; - case 0x3d030: - /* Next insn is delay slot */ - r31=0x3d038; - pc=0x3a600; - run_3a600(); return; - case 0x3d038: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + /* Next insn is delay slot */ + pc = 0x430e0; + run_43000(); + return; + case 0x43230: + /* Next insn is delay slot */ + r31 = 0x43238; + pc = 0x41400; + run_41400(); + return; + case 0x43238: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r3 = tmp; r2 = r0 + 264; r3 = r3 & 264; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x3ce64; - run_3ce00(); return; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x43064; + run_43000(); + return; } - case 0x3d04c: + case 0x4324c: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x3d05c; - pc=0x39800; - run_39800(); return; - case 0x3d05c: - /* Next insn is delay slot */ - pc=0x3ce64; - run_3ce00(); return; - case 0x3d064: - addr=r16+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + /* Next insn is delay slot */ + r31 = 0x4325c; + pc = 0x40c00; + run_40c00(); + return; + case 0x4325c: + /* Next insn is delay slot */ + pc = 0x43064; + run_43000(); + return; + case 0x43264: + addr = r16 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r5 = tmp; - if(r5 < 0) { - /* Next insn is delay slot */ - pc=0x3cf1c; - run_3ce00(); return; + if (r5 < 0) { + /* Next insn is delay slot */ + pc = 0x4311c; + run_43000(); + return; } r4 = r17 + r0; r6 = r29 + 16; - /* Next insn is delay slot */ - r31=0x3d084; - pc=0x48960; - run_48800(); return; - case 0x3d084: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3d318; - run_3d200(); return; + /* Next insn is delay slot */ + r31 = 0x43284; + pc = 0x4d750; + run_4d600(); + return; + case 0x43284: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x43518; + run_43400(); + return; } - r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r3 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r2 = r0 | 32768; r3 = r3 & 61440; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x3d318; - run_3d200(); return; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x43518; + run_43400(); + return; } r2 = r0 + 1024; - writePages[(r16+76)>>>12][((r16+76)>>>2)&0x3ff] = r2; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + writePages[(r16 + 76) >>> 12][((r16 + 76) >>> 2) & 0x3ff] = r2; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 | 1024; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x3d0b8: - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x3d1d4; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x432b8: + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x433d4; continue; } r23 = r21 + r0; - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x3d204; - run_3d200(); return; + if (r22 != r0) { + /* Next insn is delay slot */ + pc = 0x43404; + run_43400(); + return; } - case 0x3d0cc: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x432cc: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 & 4096; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3d33c; - run_3d200(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4353c; + run_43400(); + return; } - r2 = readPages[(r16+80)>>>12][((r16+80)>>>2)&0x3ff]; - case 0x3d0e4: - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; + r2 = readPages[(r16 + 80) >>> 12][((r16 + 80) >>> 2) & 0x3ff]; + case 0x432e4: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + r5 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; r20 = r2 - r3; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x3d368; - run_3d200(); return; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x43568; + run_43400(); + return; } - r6 = readPages[(r16+60)>>>12][((r16+60)>>>2)&0x3ff]; + r6 = readPages[(r16 + 60) >>> 12][((r16 + 60) >>> 2) & 0x3ff]; r20 = r20 - r6; - case 0x3d104: - r2 = readPages[(r16+56)>>>12][((r16+56)>>>2)&0x3ff]; - r4 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; + case 0x43304: + r2 = readPages[(r16 + 56) >>> 12][((r16 + 56) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; r20 = r20 + r3; r2 = r2 - r4; r20 = r20 - r2; r2 = r6 + r2; - case 0x3d11c: + case 0x4331c: r3 = r23 < r20 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3d220; - run_3d200(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x43420; + run_43400(); + return; } r3 = r20 + r2; r3 = ((r23 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3d220; - run_3d200(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x43420; + run_43400(); + return; } r20 = r23 - r20; r4 = r4 + r20; r2 = r2 - r20; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x3d170; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x43370; continue; } r2 = r16 + 64; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x3d16c; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x4336c; continue; } r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x3d16c; - pc=0x3ca00; - run_3ca00(); return; - case 0x3d16c: - writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; - case 0x3d170: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + /* Next insn is delay slot */ + r31 = 0x4336c; + pc = 0x42c00; + run_42c00(); + return; + case 0x4336c: + writePages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff] = r0; + case 0x43370: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 & 65503; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x3d180: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x43380: r4 = r16 + 92; r5 = r0 + r0; r6 = r0 + 8; - /* Next insn is delay slot */ - r31=0x3d194; - pc=0x48fec; - run_48e00(); return; - case 0x3d194: + /* Next insn is delay slot */ + r31 = 0x43394; + pc = 0x4d7f0; + run_4d600(); + return; + case 0x43394: r20 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3cea0; - run_3ce00(); return; - case 0x3d1a0: - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x430a0; + run_43000(); + return; + case 0x433a0: + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r20 = r20 - r2; - r2 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3d1c8; + r2 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x433c8; continue; } - r2 = readPages[(r16+60)>>>12][((r16+60)>>>2)&0x3ff]; + r2 = readPages[(r16 + 60) >>> 12][((r16 + 60) >>> 2) & 0x3ff]; r20 = r20 - r2; - case 0x3d1c8: - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x3d01c; + case 0x433c8: + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4321c; continue; - case 0x3d1d4: - addr=r16+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x433d4: + addr = r16 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r5 = tmp; r4 = r17 + r0; r6 = r29 + 16; - /* Next insn is delay slot */ - r31=0x3d1e8; - pc=0x48960; - run_48800(); return; - case 0x3d1e8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3cf24; - run_3ce00(); return; + /* Next insn is delay slot */ + r31 = 0x433e8; + pc = 0x4d750; + run_4d600(); + return; + case 0x433e8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x43124; + run_43000(); + return; } - r23 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; + r23 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; r23 = r21 + r23; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x3d0cc; + if (r22 == r0) { + /* Next insn is delay slot */ + pc = 0x432cc; continue; } - case 0x3d200: - pc=0x3d200; + case 0x43400: + pc = 0x43400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3d200() throws ExecutionException { /* 0x3d200 - 0x3d400 */ + + private final void run_43400() throws ExecutionException { /* 0x43400 - 0x43600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3d200: - case 0x3d204: - r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x3d368; + for (;;) { + switch (pc) { + case 0x43400: + case 0x43404: + r5 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x43568; continue; } - r6 = readPages[(r16+60)>>>12][((r16+60)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x3d104; - run_3d000(); return; - case 0x3d220: - r20 = readPages[(r16+76)>>>12][((r16+76)>>>2)&0x3ff]; - r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; + r6 = readPages[(r16 + 60) >>> 12][((r16 + 60) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x43304; + run_43200(); + return; + case 0x43420: + r20 = readPages[(r16 + 76) >>> 12][((r16 + 76) >>> 2) & 0x3ff]; + r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; r20 = r0 - r20; r20 = r23 & r20; r4 = r17 + r0; r6 = r20 + r0; r7 = r0 + r0; - /* Next insn is delay slot */ - pc=r19; - r31=0x3d244; + /* Next insn is delay slot */ + pc = r19; + r31 = 0x43444; return; - case 0x3d244: + case 0x43444: r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x3cf24; - run_3ce00(); return; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x43124; + run_43000(); + return; } - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x3d284; + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r5 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x43484; continue; } r2 = r16 + 64; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x3d280; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x43480; continue; } r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x3d280; - pc=0x3ca00; - run_3ca00(); return; - case 0x3d280: - writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; - case 0x3d284: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + /* Next insn is delay slot */ + r31 = 0x43480; + pc = 0x42c00; + run_42c00(); + return; + case 0x43480: + writePages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff] = r0; + case 0x43484: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r23 = r23 - r20; r2 = r2 & 65503; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r23 == r0) { - /* Next insn is delay slot */ - pc=0x3d180; - run_3d000(); return; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r23 == r0) { + /* Next insn is delay slot */ + pc = 0x43380; + run_43200(); + return; } r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x3d2ac; - pc=0x41200; - run_41200(); return; - case 0x3d2ac: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3cf24; - run_3ce00(); return; + /* Next insn is delay slot */ + r31 = 0x434ac; + pc = 0x46e00; + run_46e00(); + return; + case 0x434ac: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x43124; + run_43000(); + return; } - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r3 = ((r2 & 0xffffffffL) < (r23 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3cf24; - run_3ce00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x43124; + run_43000(); + return; } - r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r2 = r2 - r23; r3 = r3 + r23; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x3d180; - run_3d000(); return; - case 0x3d2e4: - r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x43380; + run_43200(); + return; + case 0x434e4: + r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; r4 = r17 + r0; r6 = r0 + r0; r7 = r0 + 1; - /* Next insn is delay slot */ - pc=r19; - r31=0x3d2fc; + /* Next insn is delay slot */ + pc = r19; + r31 = 0x434fc; return; - case 0x3d2fc: + case 0x434fc: r20 = r2 + r0; r2 = r0 + -1; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x3ce9c; - run_3ce00(); return; + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x4309c; + run_43000(); + return; } - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; - /* Next insn is delay slot */ - pc=0x3cfec; - run_3ce00(); return; - case 0x3d318: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + /* Next insn is delay slot */ + pc = 0x431ec; + run_43000(); + return; + case 0x43518: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; - /* Next insn is delay slot */ - pc=0x3cf1c; - run_3ce00(); return; - case 0x3d324: + /* Next insn is delay slot */ + pc = 0x4311c; + run_43000(); + return; + case 0x43524: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x3d334; - pc=0x3e600; - run_3e600(); return; - case 0x3d334: - /* Next insn is delay slot */ - pc=0x3cee8; - run_3ce00(); return; - case 0x3d33c: - r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x43534; + pc = 0x44400; + run_44400(); + return; + case 0x43534: + /* Next insn is delay slot */ + pc = 0x430e8; + run_43000(); + return; + case 0x4353c: + r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; r4 = r17 + r0; r6 = r0 + r0; r7 = r0 + 1; - /* Next insn is delay slot */ - pc=r19; - r31=0x3d354; + /* Next insn is delay slot */ + pc = r19; + r31 = 0x43554; return; - case 0x3d354: + case 0x43554: r3 = r0 + -1; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x3d0e4; - run_3d000(); return; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x432e4; + run_43200(); + return; } - /* Next insn is delay slot */ - pc=0x3cf24; - run_3ce00(); return; - case 0x3d368: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r4 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x43124; + run_43000(); + return; + case 0x43568: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; r5 = r0 + r0; r2 = r2 - r4; r20 = r20 - r2; r2 = r3 + r2; - /* Next insn is delay slot */ - pc=0x3d11c; - run_3d000(); return; - case 0x3d388: - r2 = r0 + 29; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - r20 = r0 + -1; - /* Next insn is delay slot */ - pc=0x3cea0; - run_3ce00(); return; - case 0x3d400: - pc=0x3d400; + /* Next insn is delay slot */ + pc = 0x4331c; + run_43200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x43588: + r2 = r0 + 29; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r2; + r20 = r0 + -1; + /* Next insn is delay slot */ + pc = 0x430a0; + run_43000(); + return; + case 0x43600: + pc = 0x43600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3d400() throws ExecutionException { /* 0x3d400 - 0x3d600 */ + + private final void run_43600() throws ExecutionException { /* 0x43600 - 0x43800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3d400: + for (;;) { + switch (pc) { + case 0x43600: r3 = r4 + r0; r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x3ce00; - run_3ce00(); return; - case 0x3d600: - pc=0x3d600; + /* Next insn is delay slot */ + pc = 0x43000; + run_43000(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x43800: + pc = 0x43800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3d600() throws ExecutionException { /* 0x3d600 - 0x3d800 */ + + private final void run_43800() throws ExecutionException { /* 0x43800 - 0x43a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3d600: + for (;;) { + switch (pc) { + case 0x43800: r29 = r29 + -48; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; r19 = r4 + 736; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x3d6cc; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + if (r19 == r0) { + /* Next insn is delay slot */ + pc = 0x438cc; continue; } r21 = r5 + r0; r20 = r0 + r0; r18 = r0 + -1; - case 0x3d638: - r17 = readPages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff]; - r16 = readPages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff]; + case 0x43838: + r17 = readPages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff]; + r16 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; r17 = r17 + -1; - if(r17 < 0) { - /* Next insn is delay slot */ - pc=0x3d690; + if (r17 < 0) { + /* Next insn is delay slot */ + pc = 0x43890; continue; } - case 0x3d64c: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x4384c: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r3 = tmp; - r3 = (r3&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3d680; + r3 = (r3 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x43880; continue; } - addr=r16+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + addr = r16 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; - if(r3 == r18) { - /* Next insn is delay slot */ - pc=0x3d680; + if (r3 == r18) { + /* Next insn is delay slot */ + pc = 0x43880; continue; } r4 = r16 + r0; - /* Next insn is delay slot */ - pc=r21; - r31=0x3d67c; + /* Next insn is delay slot */ + pc = r21; + r31 = 0x4387c; return; - case 0x3d67c: + case 0x4387c: r20 = r20 | r2; - case 0x3d680: + case 0x43880: r17 = r17 + -1; r16 = r16 + 104; - if(r17 != r18) { - /* Next insn is delay slot */ - pc=0x3d64c; + if (r17 != r18) { + /* Next insn is delay slot */ + pc = 0x4384c; continue; } - case 0x3d690: - r19 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x3d638; + case 0x43890: + r19 = readPages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff]; + if (r19 != r0) { + /* Next insn is delay slot */ + pc = 0x43838; continue; } - case 0x3d6a0: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + case 0x438a0: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r2 = r20 + r0; - r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r21 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3d6cc: + case 0x438cc: r20 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3d6a0; + /* Next insn is delay slot */ + pc = 0x438a0; continue; - case 0x3d800: - pc=0x3d800; + case 0x43a00: + pc = 0x43a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3d800() throws ExecutionException { /* 0x3d800 - 0x3da00 */ + + private final void run_43a00() throws ExecutionException { /* 0x43a00 - 0x43c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3d800: + for (;;) { + switch (pc) { + case 0x43a00: r29 = r29 + -48; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; r19 = r4 + 736; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; r20 = r4 + r0; - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x3d8dc; + if (r19 == r0) { + /* Next insn is delay slot */ + pc = 0x43adc; continue; } r21 = r5 + r0; r22 = r0 + r0; r18 = r0 + -1; - case 0x3d840: - r17 = readPages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff]; - r16 = readPages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff]; + case 0x43a40: + r17 = readPages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff]; + r16 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; r17 = r17 + -1; - if(r17 < 0) { - /* Next insn is delay slot */ - pc=0x3d89c; + if (r17 < 0) { + /* Next insn is delay slot */ + pc = 0x43a9c; continue; } - case 0x3d854: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x43a54: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r3 = tmp; - r3 = (r3&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3d88c; + r3 = (r3 & 0xffffffffL) < (2 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x43a8c; continue; } - addr=r16+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + addr = r16 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; - if(r3 == r18) { - /* Next insn is delay slot */ - pc=0x3d88c; + if (r3 == r18) { + /* Next insn is delay slot */ + pc = 0x43a8c; continue; } r4 = r20 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - pc=r21; - r31=0x3d888; + /* Next insn is delay slot */ + pc = r21; + r31 = 0x43a88; return; - case 0x3d888: + case 0x43a88: r22 = r22 | r2; - case 0x3d88c: + case 0x43a8c: r17 = r17 + -1; r16 = r16 + 104; - if(r17 != r18) { - /* Next insn is delay slot */ - pc=0x3d854; + if (r17 != r18) { + /* Next insn is delay slot */ + pc = 0x43a54; continue; } - case 0x3d89c: - r19 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x3d840; + case 0x43a9c: + r19 = readPages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff]; + if (r19 != r0) { + /* Next insn is delay slot */ + pc = 0x43a40; continue; } - case 0x3d8ac: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + case 0x43aac: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r2 = r22 + r0; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + r21 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3d8dc: + case 0x43adc: r22 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3d8ac; + /* Next insn is delay slot */ + pc = 0x43aac; continue; - case 0x3da00: - pc=0x3da00; + case 0x43c00: + pc = 0x43c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3da00() throws ExecutionException { /* 0x3da00 - 0x3dc00 */ + + private final void run_43c00() throws ExecutionException { /* 0x43c00 - 0x43e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3da00: - { long hilo = (r7) * r6; hi = (int) (hilo >>> 32); lo = (int) hilo; } + for (;;) { + switch (pc) { + case 0x43c00: { + long hilo = (long) (r7) * ((long) r6); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r29 = r29 + -64; r2 = r29 + 28; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r18; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; r2 = r0 + 1; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r20; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r19; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r17; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; r17 = r4 + r0; r18 = lo; r19 = r6 + r0; r20 = r7 + r0; - r16 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r5; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3da68; + r16 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x43c68; continue; } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3db14; + r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x43d14; continue; } - case 0x3da68: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x43c68: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 8192; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3da94; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x43c94; continue; } r3 = r3 | 8192; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = readPages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff]; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r3 = readPages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff]; r2 = r0 + -8193; r2 = r3 & r2; - writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r2; - case 0x3da94: + writePages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff] = r2; + case 0x43c94: r4 = r17 + r0; r5 = r16 + r0; r6 = r29 + 16; - /* Next insn is delay slot */ - r31=0x3daa8; - pc=0x59c00; - run_59c00(); return; - case 0x3daa8: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3daec; + /* Next insn is delay slot */ + r31 = 0x43ca8; + pc = 0x50600; + run_50600(); + return; + case 0x43ca8: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x43cec; continue; } - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; + r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; r18 = r18 - r2; - if(r19 != r0) { - /* Next insn is delay slot */ - if(r19!=0) { - hi = (int)((r18 & 0xffffffffL) % (r19 & 0xffffffffL)); lo = (int)((r18 & 0xffffffffL) / (r19 & 0xffffffffL)); + if (r19 != r0) { + /* Next insn is delay slot */ + if (r19 != 0) { + hi = (int) ((r18 & 0xffffffffL) % (r19 & 0xffffffffL)); + lo = (int) ((r18 & 0xffffffffL) / (r19 & 0xffffffffL)); } - pc=0x3dac8; + pc = 0x43cc8; continue; } - if(r19!=0) { - hi = (int)((r18 & 0xffffffffL) % (r19 & 0xffffffffL)); lo = (int)((r18 & 0xffffffffL) / (r19 & 0xffffffffL)); + if (r19 != 0) { + hi = (int) ((r18 & 0xffffffffL) % (r19 & 0xffffffffL)); + lo = (int) ((r18 & 0xffffffffL) / (r19 & 0xffffffffL)); } throw new ExecutionException("Break"); - case 0x3dac8: - r20 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r19 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r18 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r17 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + case 0x43cc8: + r20 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; r29 = r29 + 64; r2 = lo; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3daec: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; + case 0x43cec: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; r2 = r20 + r0; - r19 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r20 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r18 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r17 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + r19 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3db14: - /* Next insn is delay slot */ - r31=0x3db1c; - pc=0x3a600; - run_3a600(); return; - case 0x3db1c: - /* Next insn is delay slot */ - pc=0x3da68; + case 0x43d14: + /* Next insn is delay slot */ + r31 = 0x43d1c; + pc = 0x41400; + run_41400(); + return; + case 0x43d1c: + /* Next insn is delay slot */ + pc = 0x43c68; continue; - case 0x3dc00: - pc=0x3dc00; + case 0x43e00: + pc = 0x43e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3dc00() throws ExecutionException { /* 0x3dc00 - 0x3de00 */ + + private final void run_43e00() throws ExecutionException { /* 0x43e00 - 0x44000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3dc00: + for (;;) { + switch (pc) { + case 0x43e00: r29 = r29 + -32; r8 = r4 + r0; r3 = r5 + r0; r2 = r6 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r5 = r8 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r7; r6 = r3 + r0; r7 = r2 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x3dc30; - pc=0x3da00; - run_3da00(); return; - case 0x3dc30: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x43e30; + pc = 0x43c00; + run_43c00(); + return; + case 0x43e30: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3de00: - pc=0x3de00; + case 0x44000: + pc = 0x44000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3de00() throws ExecutionException { /* 0x3de00 - 0x3e000 */ + + private final void run_44000() throws ExecutionException { /* 0x44000 - 0x44200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3de00: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x3e200; - run_3e200(); return; - case 0x3e000: - pc=0x3e000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_3e000() throws ExecutionException { /* 0x3e000 - 0x3e200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x3e000: + for (;;) { + switch (pc) { + case 0x44000: r29 = r29 + -32; r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r6 = r29 + 16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x3e01c; - pc=0x3e200; - run_3e200(); return; - case 0x3e01c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x4401c; + pc = 0x44200; + run_44200(); + return; + case 0x4401c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3e200: - pc=0x3e200; + case 0x44200: + pc = 0x44200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3e200() throws ExecutionException { /* 0x3e200 - 0x3e400 */ + + private final void run_44200() throws ExecutionException { /* 0x44200 - 0x44400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3e200: + for (;;) { + switch (pc) { + case 0x44200: r29 = r29 + -48; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; r20 = r4 + r0; r18 = r5 + r0; r21 = r6 + r0; - /* Next insn is delay slot */ - r31=0x3e238; - pc=0x58e00; - run_58e00(); return; - case 0x3e238: - r16 = readPages[(r28+-31080)>>>12][((r28+-31080)>>>2)&0x3ff]; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x3e2f0; + /* Next insn is delay slot */ + r31 = 0x44238; + pc = 0x50000; + run_50000(); + return; + case 0x44238: + r16 = readPages[(r28 + -31520) >>> 12][((r28 + -31520) >>> 2) & 0x3ff]; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x442f0; continue; } - addr=r18+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r18 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3e354; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x44354; continue; } r5 = r0 + 61; r2 = r18 + r0; r4 = r0 + 61; - if(r3 != r5) { - /* Next insn is delay slot */ - pc=0x3e27c; + if (r3 != r5) { + /* Next insn is delay slot */ + pc = 0x4427c; continue; } - /* Next insn is delay slot */ - pc=0x3e2f0; + /* Next insn is delay slot */ + pc = 0x442f0; continue; - case 0x3e274: - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x3e2f0; + case 0x44274: + if (r3 == r4) { + /* Next insn is delay slot */ + pc = 0x442f0; continue; } - case 0x3e27c: + case 0x4427c: r2 = r2 + 1; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3e274; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x44274; continue; } r17 = r2 - r18; - case 0x3e294: - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3e2f0; + case 0x44294: + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x442f0; continue; } r22 = r0 + 61; - case 0x3e2a8: + case 0x442a8: r5 = r18 + r0; r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x3e2b8; - pc=0x43000; - run_43000(); return; - case 0x3e2b8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3e2dc; - continue; - } - r19 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r19 = r19 + r17; - addr=r19+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r22) { - /* Next insn is delay slot */ - pc=0x3e32c; - continue; - } - case 0x3e2dc: - r16 = r16 + 4; - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x3e2a8; - continue; - } - case 0x3e2f0: - r4 = r20 + r0; - /* Next insn is delay slot */ - r31=0x3e2fc; - pc=0x59000; - run_59000(); return; - case 0x3e2fc: - r2 = r0 + r0; - case 0x3e300: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x442b8; + pc = 0x48200; + run_48200(); return; - case 0x3e32c: - r2 = readPages[(r28+-31080)>>>12][((r28+-31080)>>>2)&0x3ff]; + case 0x442b8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x442dc; + continue; + } + r19 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r19 = r19 + r17; + addr = r19 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ + r2 = tmp; + if (r2 == r22) { + /* Next insn is delay slot */ + pc = 0x4432c; + continue; + } + case 0x442dc: + r16 = r16 + 4; + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x442a8; + continue; + } + case 0x442f0: + r4 = r20 + r0; + /* Next insn is delay slot */ + r31 = 0x442fc; + pc = 0x50200; + run_50200(); + return; + case 0x442fc: + r2 = r0 + r0; + case 0x44300: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x4432c: + r2 = readPages[(r28 + -31520) >>> 12][((r28 + -31520) >>> 2) & 0x3ff]; r4 = r20 + r0; r16 = r16 - r2; r16 = r16 >> 2; - writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x3e348; - pc=0x59000; - run_59000(); return; - case 0x3e348: + writePages[(r21 + 0) >>> 12][((r21 + 0) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x44348; + pc = 0x50200; + run_50200(); + return; + case 0x44348: r2 = r19 + 1; - /* Next insn is delay slot */ - pc=0x3e300; + /* Next insn is delay slot */ + pc = 0x44300; continue; - case 0x3e354: + case 0x44354: r17 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3e294; + /* Next insn is delay slot */ + pc = 0x44294; continue; - case 0x3e400: - pc=0x3e400; + case 0x44400: + pc = 0x44400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3e400() throws ExecutionException { /* 0x3e400 - 0x3e600 */ + + private final void run_44400() throws ExecutionException { /* 0x44400 - 0x44600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3e400: - r29 = r29 + -32; - r6 = r29 + 16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x3e414; - pc=0x3e200; - run_3e200(); return; - case 0x3e414: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x3e600: - pc=0x3e600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_3e600() throws ExecutionException { /* 0x3e600 - 0x3e800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x3e600: - addr=r5+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + for (;;) { + switch (pc) { + case 0x44400: + addr = r5 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r29 = r29 + -104; r3 = r2 & 65535; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r16; + writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r16; r16 = r5 + r0; r5 = r3 & 2; - writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = r31; - writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = r19; - writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r18; - writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r17; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x3e730; + writePages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 96) >>> 12][((r29 + 96) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff] = r17; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x44530; continue; } - addr=r16+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + addr = r16 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r5 = tmp; r17 = r4 + r0; - if(r5 < 0) { - /* Next insn is delay slot */ - pc=0x3e6f0; + if (r5 < 0) { + /* Next insn is delay slot */ + pc = 0x444f0; continue; } r6 = r29 + 16; - /* Next insn is delay slot */ - r31=0x3e64c; - pc=0x48960; - run_48800(); return; - case 0x3e64c: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x3e6e4; + /* Next insn is delay slot */ + r31 = 0x4444c; + pc = 0x4d750; + run_4d600(); + return; + case 0x4444c: + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x444e4; continue; } - r2 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r2 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r3 = r0 | 32768; r2 = r2 & 61440; r19 = r2 ^ 8192; - r19 = (r19&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x3e770; + r19 = (r19 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x44570; continue; } - case 0x3e670: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x44470: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r18 = r0 + 1024; r2 = r2 | 2048; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x3e680: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x44480: r4 = r17 + r0; r5 = r18 + r0; - /* Next insn is delay slot */ - r31=0x3e690; - pc=0x3ec00; - run_3ec00(); return; - case 0x3e690: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3e714; + /* Next insn is delay slot */ + r31 = 0x44490; + pc = 0x44a00; + run_44a00(); + return; + case 0x44490: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x44514; continue; } r3 = 4 << 16; - r3 = r3 + -24576; - writePages[(r17+60)>>>12][((r17+60)>>>2)&0x3ff] = r3; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + r3 = r3 + 4096; + writePages[(r17 + 60) >>> 12][((r17 + 60) >>> 2) & 0x3ff] = r3; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r3 = tmp; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; r3 = r3 | 128; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r2; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r18; - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x3e7a4; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = r18; + if (r19 != r0) { + /* Next insn is delay slot */ + pc = 0x445a4; continue; } - case 0x3e6c4: - r31 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; - r19 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r18 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r17 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r16 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; + case 0x444c4: + r31 = readPages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 96) >>> 12][((r29 + 96) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; r29 = r29 + 104; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3e6e4: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x444e4: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r3 = r2 & 65535; - case 0x3e6f0: + case 0x444f0: r3 = r3 & 128; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3e764; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x44564; continue; } r18 = r0 + 1024; - case 0x3e700: + case 0x44500: r2 = r2 | 2048; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r19 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3e680; + /* Next insn is delay slot */ + pc = 0x44480; continue; - case 0x3e714: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x44514: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r3 = r2 & 512; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3e6c4; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x444c4; continue; } r2 = r2 | 2; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x3e730: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x44530: r2 = r16 + 67; - r31 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r2; + r31 = readPages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r2; r2 = r0 + 1; - r19 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r18 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r17 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r2; - r16 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; + r19 = readPages[(r29 + 96) >>> 12][((r29 + 96) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; r29 = r29 + 104; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3e764: + case 0x44564: r18 = r0 + 64; - /* Next insn is delay slot */ - pc=0x3e700; + /* Next insn is delay slot */ + pc = 0x44500; continue; - case 0x3e770: + case 0x44570: r2 = 4 << 16; - r3 = readPages[(r16+40)>>>12][((r16+40)>>>2)&0x3ff]; - r2 = r2 + 10240; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x3e670; + r3 = readPages[(r16 + 40) >>> 12][((r16 + 40) >>> 2) & 0x3ff]; + r2 = r2 + 31232; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x44470; continue; } - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r18 = r0 + 1024; r2 = r2 | 1024; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 + 1024; - writePages[(r16+76)>>>12][((r16+76)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x3e680; + writePages[(r16 + 76) >>> 12][((r16 + 76) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x44480; continue; - case 0x3e7a4: - addr=r16+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x445a4: + addr = r16 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r5 = tmp; r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x3e7b4; - pc=0x56800; - run_56800(); return; - case 0x3e7b4: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3e6c4; + /* Next insn is delay slot */ + r31 = 0x445b4; + pc = 0x4da00; + run_4da00(); + return; + case 0x445b4: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x444c4; continue; } - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 | 1; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x3e6c4; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x444c4; continue; - case 0x3e800: - pc=0x3e800; + case 0x44600: + pc = 0x44600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3e800() throws ExecutionException { /* 0x3e800 - 0x3ea00 */ + + private final void run_44600() throws ExecutionException { /* 0x44600 - 0x44800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3e800: + for (;;) { + switch (pc) { + case 0x44600: r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x3ec00; - run_3ec00(); return; - case 0x3ea00: - pc=0x3ea00; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x44a00; + run_44a00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x44800: + pc = 0x44800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3ea00() throws ExecutionException { /* 0x3ea00 - 0x3ec00 */ + + private final void run_44800() throws ExecutionException { /* 0x44800 - 0x44a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3ea00: + for (;;) { + switch (pc) { + case 0x44800: r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x3ca00; - run_3ca00(); return; - case 0x3ec00: - pc=0x3ec00; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x42c00; + run_42c00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x44a00: + pc = 0x44a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3ec00() throws ExecutionException { /* 0x3ec00 - 0x3ee00 */ + + private final void run_44a00() throws ExecutionException { /* 0x44a00 - 0x44c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3ec00: + for (;;) { + switch (pc) { + case 0x44a00: r2 = r5 + 11; r29 = r29 + -64; - r3 = (r2&0xffffffffL) < (23&0xffffffffL) ? 1 : 0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r23; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; + r3 = (r2 & 0xffffffffL) < (23 & 0xffffffffL) ? 1 : 0; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; r19 = r4 + r0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3ed04; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x44b04; continue; } r17 = r0 + -8; r17 = r2 & r17; - if(r17 < 0) { - /* Next insn is delay slot */ - pc=0x3ed14; + if (r17 < 0) { + /* Next insn is delay slot */ + pc = 0x44b14; continue; } r5 = ((r17 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x3ed14; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x44b14; continue; } - case 0x3ec5c: + case 0x44a5c: r4 = r19 + r0; - /* Next insn is delay slot */ - r31=0x3ec68; - pc=0x3f600; - run_3f600(); return; - case 0x3ec68: - r2 = (r17&0xffffffffL) < (504&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3ed28; + /* Next insn is delay slot */ + r31 = 0x44a68; + pc = 0x45600; + run_45600(); + return; + case 0x44a68: + r2 = (r17 & 0xffffffffL) < (504 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x44b28; continue; } - r18 = 7 << 16; - r18 = r18 + 11104; + r18 = 6 << 16; + r18 = r18 + -16464; r2 = r18 + r17; - r16 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; + r16 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; r7 = r17 >>> 3; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x3f2d8; - run_3f200(); return; + if (r16 == r2) { + /* Next insn is delay slot */ + pc = 0x450d8; + run_45000(); + return; } - case 0x3ec90: - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + case 0x44a90: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r2 = r0 + -4; - r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r2 = r3 & r2; - r3 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = r3; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r4; - case 0x3ecb0: + r3 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r3; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r4; + case 0x44ab0: r2 = r16 + r2; - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; + r3 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; r4 = r19 + r0; r3 = r3 | 1; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x3eccc; - pc=0x3f800; - run_3f800(); return; - case 0x3eccc: - r2 = r16 + 8; - case 0x3ecd0: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x44acc; + pc = 0x45800; + run_45800(); return; - case 0x3ed04: + case 0x44acc: + r2 = r16 + 8; + case 0x44ad0: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 64; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x44b04: r17 = r0 + 16; r5 = ((r17 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x3ec5c; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x44a5c; continue; } - case 0x3ed14: + case 0x44b14: r2 = r0 + 12; - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; + writePages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff] = r2; r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3ecd0; + /* Next insn is delay slot */ + pc = 0x44ad0; continue; - case 0x3ed28: + case 0x44b28: r2 = r17 >>> 9; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3ef4c; - run_3ee00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x44d4c; + run_44c00(); + return; } - r3 = (r2&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3f1b8; - run_3f000(); return; + r3 = (r2 & 0xffffffffL) < (5 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x44fb8; + run_44e00(); + return; } r8 = r17 >>> 6; r8 = r8 + 56; r6 = r8 << 1; - case 0x3ed4c: - r18 = 7 << 16; + case 0x44b4c: + r18 = 6 << 16; r6 = r6 << 2; - r18 = r18 + 11104; + r18 = r18 + -16464; r6 = r18 + r6; - r16 = readPages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff]; - if(r6 == r16) { - /* Next insn is delay slot */ - pc=0x3edd0; + r16 = readPages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff]; + if (r6 == r16) { + /* Next insn is delay slot */ + pc = 0x44bd0; continue; } - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r2 = r0 + -4; r3 = r3 & r2; r4 = r3 - r17; r2 = r4 < 16 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3ef5c; - run_3ee00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x44d5c; + run_44c00(); + return; } r7 = r0 + -4; - if(r4 < 0) { - /* Next insn is delay slot */ - pc=0x3edc0; + if (r4 < 0) { + /* Next insn is delay slot */ + pc = 0x44bc0; continue; } - /* Next insn is delay slot */ - pc=0x3ef68; - run_3ee00(); return; - case 0x3ed9c: - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x44d68; + run_44c00(); + return; + case 0x44b9c: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r3 = r3 & r7; r2 = r3 - r17; r5 = r2 < 16 ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x3ef5c; - run_3ee00(); return; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x44d5c; + run_44c00(); + return; } - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x3ef68; - run_3ee00(); return; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x44d68; + run_44c00(); + return; } - case 0x3edc0: - r16 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - if(r6 != r16) { - /* Next insn is delay slot */ - pc=0x3ed9c; + case 0x44bc0: + r16 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + if (r6 != r16) { + /* Next insn is delay slot */ + pc = 0x44b9c; continue; } - case 0x3edd0: + case 0x44bd0: r7 = r8 + 1; - case 0x3edd4: - r9 = 7 << 16; - r16 = readPages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff]; - r9 = r9 + 11112; - if(r16 == r9) { - /* Next insn is delay slot */ - pc=0x3f2b0; - run_3f200(); return; + case 0x44bd4: + r9 = 6 << 16; + r16 = readPages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff]; + r9 = r9 + -16456; + if (r16 == r9) { + /* Next insn is delay slot */ + pc = 0x450b0; + run_45000(); + return; } - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r2 = r0 + -4; r2 = r3 & r2; r3 = r2 - r17; r4 = r3 < 16 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3f26c; - run_3f200(); return; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4506c; + run_45000(); + return; } - case 0x3ee00: - pc=0x3ee00; + case 0x44c00: + pc = 0x44c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3ee00() throws ExecutionException { /* 0x3ee00 - 0x3f000 */ + + private final void run_44c00() throws ExecutionException { /* 0x44c00 - 0x44e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3ee00: - writePages[(r18+20)>>>12][((r18+20)>>>2)&0x3ff] = r9; - writePages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff] = r9; - if(r3 >= 0) { - /* Next insn is delay slot */ - pc=0x3ecb0; - run_3ec00(); return; + for (;;) { + switch (pc) { + case 0x44c00: + writePages[(r18 + 20) >>> 12][((r18 + 20) >>> 2) & 0x3ff] = r9; + writePages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff] = r9; + if (r3 >= 0) { + /* Next insn is delay slot */ + pc = 0x44ab0; + run_44a00(); + return; } - r3 = (r2&0xffffffffL) < (512&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3f1e4; - run_3f000(); return; + r3 = (r2 & 0xffffffffL) < (512 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x44fe4; + run_44e00(); + return; } r3 = r2 >>> 3; r2 = r3 >> 2; r4 = r0 + 1; - r4 = r4 << (r2&0x1f); + r4 = r4 << (r2 & 0x1f); r3 = r3 << 3; - r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; + r2 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; r3 = r18 + r3; r2 = r4 | r2; - r4 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - writePages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff] = r2; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r3; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r4; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r16; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = r16; - case 0x3ee58: + r4 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; + writePages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff] = r2; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r4; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r16; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r16; + case 0x44c58: r3 = r7 >> 2; r4 = r0 + 1; - r4 = r4 << (r3&0x1f); + r4 = r4 << (r3 & 0x1f); r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3efa0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x44da0; continue; } r3 = r2 & r4; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3ee98; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x44c98; continue; } r3 = r0 + -4; r7 = r7 & r3; - case 0x3ee84: + case 0x44c84: r4 = r4 << 1; r3 = r2 & r4; r7 = r7 + 4; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3ee84; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x44c84; continue; } - case 0x3ee98: + case 0x44c98: r8 = r0 + -4; - case 0x3ee9c: + case 0x44c9c: r10 = r7 << 3; r10 = r18 + r10; r6 = r10 + r0; r11 = r7 + r0; - case 0x3eeac: - r16 = readPages[(r6+12)>>>12][((r6+12)>>>2)&0x3ff]; - if(r6 != r16) { - /* Next insn is delay slot */ - pc=0x3eedc; + case 0x44cac: + r16 = readPages[(r6 + 12) >>> 12][((r6 + 12) >>> 2) & 0x3ff]; + if (r6 != r16) { + /* Next insn is delay slot */ + pc = 0x44cdc; continue; } - /* Next insn is delay slot */ - pc=0x3f2bc; - run_3f200(); return; - case 0x3eec4: - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x3f2f4; - run_3f200(); return; + /* Next insn is delay slot */ + pc = 0x450bc; + run_45000(); + return; + case 0x44cc4: + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x450f4; + run_45000(); + return; } - r16 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - if(r6 == r16) { - /* Next insn is delay slot */ - pc=0x3f2bc; - run_3f200(); return; + r16 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + if (r6 == r16) { + /* Next insn is delay slot */ + pc = 0x450bc; + run_45000(); + return; } - case 0x3eedc: - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + case 0x44cdc: + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r3 = r3 & r8; r2 = r3 - r17; r5 = r2 < 16 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x3eec4; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x44cc4; continue; } - r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r5 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + r4 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r5 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r3 = r16 + r17; r17 = r17 | 1; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r17; - writePages[(r5+12)>>>12][((r5+12)>>>2)&0x3ff] = r4; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r5; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r17; + writePages[(r5 + 12) >>> 12][((r5 + 12) >>> 2) & 0x3ff] = r4; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r5; r4 = r2 | 1; - writePages[(r18+20)>>>12][((r18+20)>>>2)&0x3ff] = r3; - writePages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff] = r3; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r9; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r9; + writePages[(r18 + 20) >>> 12][((r18 + 20) >>> 2) & 0x3ff] = r3; + writePages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff] = r3; + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r4; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r9; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r9; r3 = r3 + r2; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; r4 = r19 + r0; - /* Next insn is delay slot */ - r31=0x3ef40; - pc=0x3f800; - run_3f800(); return; - case 0x3ef40: + /* Next insn is delay slot */ + r31 = 0x44d40; + pc = 0x45800; + run_45800(); + return; + case 0x44d40: r2 = r16 + 8; - /* Next insn is delay slot */ - pc=0x3ecd0; - run_3ec00(); return; - case 0x3ef4c: + /* Next insn is delay slot */ + pc = 0x44ad0; + run_44a00(); + return; + case 0x44d4c: r6 = r0 + 126; r8 = r0 + 63; - /* Next insn is delay slot */ - pc=0x3ed4c; - run_3ec00(); return; - case 0x3ef5c: + /* Next insn is delay slot */ + pc = 0x44b4c; + run_44a00(); + return; + case 0x44d5c: r8 = r8 + -1; - /* Next insn is delay slot */ - pc=0x3edd0; - run_3ec00(); return; - case 0x3ef68: - r2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r4 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x44bd0; + run_44a00(); + return; + case 0x44d68: + r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r4 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r3 = r16 + r3; - writePages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff] = r2; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r4; - r2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; + writePages[(r4 + 12) >>> 12][((r4 + 12) >>> 2) & 0x3ff] = r2; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r4; + r2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; r4 = r19 + r0; r2 = r2 | 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x3ef94; - pc=0x3f800; - run_3f800(); return; - case 0x3ef94: + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x44d94; + pc = 0x45800; + run_45800(); + return; + case 0x44d94: r2 = r16 + 8; - /* Next insn is delay slot */ - pc=0x3ecd0; - run_3ec00(); return; - case 0x3efa0: - r16 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x44ad0; + run_44a00(); + return; + case 0x44da0: + r16 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; r2 = r0 + -4; - r21 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + r21 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r21 = r21 & r2; r2 = ((r21 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3efd0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x44dd0; continue; } r2 = r21 - r17; r3 = r2 < 16 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3f188; - run_3f000(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x44f88; + run_44e00(); + return; } - case 0x3efd0: - r22 = readPages[(r28+-30640)>>>12][((r28+-30640)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x3efdc; - pc=0x48b80; - run_48a00(); return; - case 0x3efdc: - r3 = readPages[(r28+-31068)>>>12][((r28+-31068)>>>2)&0x3ff]; + case 0x44dd0: + r22 = readPages[(r28 + -31276) >>> 12][((r28 + -31276) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x44ddc; + pc = 0x4d7d0; + run_4d600(); + return; + case 0x44ddc: + r3 = readPages[(r28 + -31508) >>> 12][((r28 + -31508) >>> 2) & 0x3ff]; r22 = r22 + 16; r23 = r2 + r0; r2 = r0 + -1; r30 = r16 + r21; r22 = r22 + r17; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x3f00c; - run_3f000(); return; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x44e0c; + run_44e00(); + return; } r2 = r22 + -1; - case 0x3f000: - pc=0x3f000; + case 0x44e00: + pc = 0x44e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3f000() throws ExecutionException { /* 0x3f000 - 0x3f200 */ + + private final void run_44e00() throws ExecutionException { /* 0x44e00 - 0x45000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3f000: + for (;;) { + switch (pc) { + case 0x44e00: r2 = r2 + r23; r22 = r0 - r23; r22 = r22 & r2; - case 0x3f00c: + case 0x44e0c: r4 = r19 + r0; r5 = r22 + r0; - /* Next insn is delay slot */ - r31=0x3f01c; - pc=0x48920; - run_48800(); return; - case 0x3f01c: + /* Next insn is delay slot */ + r31 = 0x44e1c; + pc = 0x4d710; + run_4d600(); + return; + case 0x44e1c: r20 = r2 + r0; r2 = r0 + -1; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x3f158; + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x44f58; continue; } r2 = ((r20 & 0xffffffffL) < (r30 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3f354; - run_3f200(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x45154; + run_45000(); + return; } - case 0x3f038: - r3 = 7 << 16; - r2 = readPages[(r3+17968)>>>12][((r3+17968)>>>2)&0x3ff]; + case 0x44e38: + r3 = 6 << 16; + r2 = readPages[(r3 + -10368) >>> 12][((r3 + -10368) >>> 2) & 0x3ff]; r4 = r23 + -1; r2 = r22 + r2; - writePages[(r3+17968)>>>12][((r3+17968)>>>2)&0x3ff] = r2; - if(r30 == r20) { - /* Next insn is delay slot */ - pc=0x3f4ac; - run_3f400(); return; + writePages[(r3 + -10368) >>> 12][((r3 + -10368) >>> 2) & 0x3ff] = r2; + if (r30 == r20) { + /* Next insn is delay slot */ + pc = 0x452ac; + run_45200(); + return; } - case 0x3f054: - r6 = readPages[(r28+-31068)>>>12][((r28+-31068)>>>2)&0x3ff]; + case 0x44e54: + r6 = readPages[(r28 + -31508) >>> 12][((r28 + -31508) >>> 2) & 0x3ff]; r5 = r0 + -1; - if(r6 == r5) { - /* Next insn is delay slot */ - pc=0x3f4d0; - run_3f400(); return; + if (r6 == r5) { + /* Next insn is delay slot */ + pc = 0x452d0; + run_45200(); + return; } r30 = r20 - r30; r2 = r2 + r30; - writePages[(r3+17968)>>>12][((r3+17968)>>>2)&0x3ff] = r2; - case 0x3f070: + writePages[(r3 + -10368) >>> 12][((r3 + -10368) >>> 2) & 0x3ff] = r2; + case 0x44e70: r2 = r20 & 7; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3f410; - run_3f400(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x45210; + run_45200(); + return; } r5 = r0 + 8; r2 = r5 - r2; r20 = r20 + r2; - case 0x3f088: + case 0x44e88: r22 = r20 + r22; r2 = r2 + r23; r4 = r22 & r4; r22 = r2 - r4; r5 = r22 + r0; r4 = r19 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x3f0ac; - pc=0x48920; - run_48800(); return; - case 0x3f0ac: + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x44eac; + pc = 0x4d710; + run_4d600(); + return; + case 0x44eac: r4 = r0 + -1; - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x3f4fc; - run_3f400(); return; + r3 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x452fc; + run_45200(); + return; } r2 = r2 - r20; r4 = r22 + r2; r4 = r4 | 1; - case 0x3f0c8: - r2 = readPages[(r3+17968)>>>12][((r3+17968)>>>2)&0x3ff]; - writePages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff] = r20; + case 0x44ec8: + r2 = readPages[(r3 + -10368) >>> 12][((r3 + -10368) >>> 2) & 0x3ff]; + writePages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff] = r20; r2 = r22 + r2; - writePages[(r3+17968)>>>12][((r3+17968)>>>2)&0x3ff] = r2; - writePages[(r20+4)>>>12][((r20+4)>>>2)&0x3ff] = r4; - if(r16 == r18) { - /* Next insn is delay slot */ - pc=0x3f128; + writePages[(r3 + -10368) >>> 12][((r3 + -10368) >>> 2) & 0x3ff] = r2; + writePages[(r20 + 4) >>> 12][((r20 + 4) >>> 2) & 0x3ff] = r4; + if (r16 == r18) { + /* Next insn is delay slot */ + pc = 0x44f28; continue; } - r3 = (r21&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3f444; - run_3f400(); return; + r3 = (r21 & 0xffffffffL) < (16 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x45244; + run_45200(); + return; } - r4 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + r4 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r21 = r21 + -12; r3 = r0 + -8; r3 = r21 & r3; r4 = r4 & 1; r4 = r3 | r4; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r4; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r4; r5 = r0 + 5; r4 = r16 + r3; - r3 = (r3&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r5; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r5; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3f4dc; - run_3f400(); return; + r3 = (r3 & 0xffffffffL) < (16 & 0xffffffffL) ? 1 : 0; + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r5; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r5; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x452dc; + run_45200(); + return; } - case 0x3f128: - r3 = readPages[(r28+-30644)>>>12][((r28+-30644)>>>2)&0x3ff]; + case 0x44f28: + r3 = readPages[(r28 + -31280) >>> 12][((r28 + -31280) >>> 2) & 0x3ff]; r3 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3f140; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x44f40; continue; } - writePages[(r28+-30644)>>>12][((r28+-30644)>>>2)&0x3ff] = r2; - case 0x3f140: - r3 = readPages[(r28+-30648)>>>12][((r28+-30648)>>>2)&0x3ff]; + writePages[(r28 + -31280) >>> 12][((r28 + -31280) >>> 2) & 0x3ff] = r2; + case 0x44f40: + r3 = readPages[(r28 + -31284) >>> 12][((r28 + -31284) >>> 2) & 0x3ff]; r3 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3f158; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x44f58; continue; } - writePages[(r28+-30648)>>>12][((r28+-30648)>>>2)&0x3ff] = r2; - case 0x3f158: - r16 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; + writePages[(r28 + -31284) >>> 12][((r28 + -31284) >>> 2) & 0x3ff] = r2; + case 0x44f58: + r16 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; r2 = r0 + -4; - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + r3 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r3 = r3 & r2; - case 0x3f16c: + case 0x44f6c: r2 = r3 - r17; r3 = ((r3 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3f3d8; - run_3f200(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x451d8; + run_45000(); + return; } r3 = r2 < 16 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3f3d8; - run_3f200(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x451d8; + run_45000(); + return; } - case 0x3f188: + case 0x44f88: r3 = r17 | 1; r2 = r2 | 1; r17 = r16 + r17; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r3; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r3; r4 = r19 + r0; - writePages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff] = r17; - writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x3f1ac; - pc=0x3f800; - run_3f800(); return; - case 0x3f1ac: + writePages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff] = r17; + writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x44fac; + pc = 0x45800; + run_45800(); + return; + case 0x44fac: r2 = r16 + 8; - /* Next insn is delay slot */ - pc=0x3ecd0; - run_3ec00(); return; - case 0x3f1b8: - r3 = (r2&0xffffffffL) < (21&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3f330; - run_3f200(); return; + /* Next insn is delay slot */ + pc = 0x44ad0; + run_44a00(); + return; + case 0x44fb8: + r3 = (r2 & 0xffffffffL) < (21 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x45130; + run_45000(); + return; } - r3 = (r2&0xffffffffL) < (85&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3f3f0; - run_3f200(); return; + r3 = (r2 & 0xffffffffL) < (85 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x451f0; + run_45000(); + return; } r8 = r17 >>> 12; r8 = r8 + 110; r6 = r8 << 1; - /* Next insn is delay slot */ - pc=0x3ed4c; - run_3ec00(); return; - case 0x3f1e4: - r3 = r2 >>> 9; - r4 = (r3&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x3f340; - run_3f200(); return; - } - r4 = (r3&0xffffffffL) < (21&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3f47c; - run_3f400(); return; - } - case 0x3f200: - pc=0x3f200; + /* Next insn is delay slot */ + pc = 0x44b4c; + run_44a00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x44fe4: + r3 = r2 >>> 9; + r4 = (r3 & 0xffffffffL) < (5 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x45140; + run_45000(); + return; + } + r4 = (r3 & 0xffffffffL) < (21 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4527c; + run_45200(); + return; + } + case 0x45000: + pc = 0x45000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3f200() throws ExecutionException { /* 0x3f200 - 0x3f400 */ + + private final void run_45000() throws ExecutionException { /* 0x45000 - 0x45200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3f200: + for (;;) { + switch (pc) { + case 0x45000: r4 = r3 + 91; r5 = r4 << 1; - case 0x3f208: + case 0x45008: r5 = r5 << 2; r5 = r18 + r5; - r3 = readPages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff]; - if(r3 == r5) { - /* Next insn is delay slot */ - pc=0x3f41c; - run_3f400(); return; + r3 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + if (r3 == r5) { + /* Next insn is delay slot */ + pc = 0x4521c; + run_45200(); + return; } r6 = r0 + -4; - case 0x3f224: - r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; + case 0x45024: + r4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; r4 = r4 & r6; r4 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3f24c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4504c; continue; } - r3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - if(r5 != r3) { - /* Next insn is delay slot */ - pc=0x3f224; + r3 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; + if (r5 != r3) { + /* Next insn is delay slot */ + pc = 0x45024; continue; } - case 0x3f24c: - r4 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; - case 0x3f254: - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r4; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r3; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r16; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - pc=0x3ee58; - run_3ee00(); return; - case 0x3f26c: + case 0x4504c: + r4 = readPages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff]; + r2 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + case 0x45054: + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r4; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r16; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + pc = 0x44c58; + run_44c00(); + return; + case 0x4506c: r2 = r16 + r17; r4 = r3 | 1; r17 = r17 | 1; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r17; - writePages[(r18+20)>>>12][((r18+20)>>>2)&0x3ff] = r2; - writePages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff] = r2; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r4; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r9; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r9; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r17; + writePages[(r18 + 20) >>> 12][((r18 + 20) >>> 2) & 0x3ff] = r2; + writePages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r4; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r9; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r9; r2 = r2 + r3; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; r4 = r19 + r0; - /* Next insn is delay slot */ - r31=0x3f2a4; - pc=0x3f800; - run_3f800(); return; - case 0x3f2a4: + /* Next insn is delay slot */ + r31 = 0x450a4; + pc = 0x45800; + run_45800(); + return; + case 0x450a4: r2 = r16 + 8; - /* Next insn is delay slot */ - pc=0x3ecd0; - run_3ec00(); return; - case 0x3f2b0: - r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x3ee58; - run_3ee00(); return; - case 0x3f2bc: + /* Next insn is delay slot */ + pc = 0x44ad0; + run_44a00(); + return; + case 0x450b0: + r2 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x44c58; + run_44c00(); + return; + case 0x450bc: r11 = r11 + 1; r2 = r11 & 3; r6 = r6 + 8; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3eeac; - run_3ee00(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x44cac; + run_44c00(); + return; } - /* Next insn is delay slot */ - pc=0x3f378; + /* Next insn is delay slot */ + pc = 0x45178; continue; - case 0x3f2d8: + case 0x450d8: r2 = r16 + 8; - r16 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; + r16 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; r7 = r7 + 2; - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x3edd4; - run_3ec00(); return; + if (r2 == r16) { + /* Next insn is delay slot */ + pc = 0x44bd4; + run_44a00(); + return; } - /* Next insn is delay slot */ - pc=0x3ec90; - run_3ec00(); return; - case 0x3f2f4: + /* Next insn is delay slot */ + pc = 0x44a90; + run_44a00(); + return; + case 0x450f4: r3 = r16 + r3; - r2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; + r2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; r4 = r19 + r0; r2 = r2 | 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x3f324; - pc=0x3f800; - run_3f800(); return; - case 0x3f324: + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x45124; + pc = 0x45800; + run_45800(); + return; + case 0x45124: r2 = r16 + 8; - /* Next insn is delay slot */ - pc=0x3ecd0; - run_3ec00(); return; - case 0x3f330: + /* Next insn is delay slot */ + pc = 0x44ad0; + run_44a00(); + return; + case 0x45130: r8 = r2 + 91; r6 = r8 << 1; - /* Next insn is delay slot */ - pc=0x3ed4c; - run_3ec00(); return; - case 0x3f340: + /* Next insn is delay slot */ + pc = 0x44b4c; + run_44a00(); + return; + case 0x45140: r4 = r2 >>> 6; r4 = r4 + 56; r5 = r4 << 1; - /* Next insn is delay slot */ - pc=0x3f208; + /* Next insn is delay slot */ + pc = 0x45008; continue; - case 0x3f354: - if(r16 != r18) { - /* Next insn is delay slot */ - pc=0x3f158; - run_3f000(); return; + case 0x45154: + if (r16 != r18) { + /* Next insn is delay slot */ + pc = 0x44f58; + run_44e00(); + return; } - /* Next insn is delay slot */ - pc=0x3f038; - run_3f000(); return; - case 0x3f364: + /* Next insn is delay slot */ + pc = 0x44e38; + run_44e00(); + return; + case 0x45164: r2 = r10 + -8; - r10 = readPages[(r10+0)>>>12][((r10+0)>>>2)&0x3ff]; + r10 = readPages[(r10 + 0) >>> 12][((r10 + 0) >>> 2) & 0x3ff]; r7 = r7 + -1; - if(r10 != r2) { - /* Next insn is delay slot */ - pc=0x3f55c; - run_3f400(); return; + if (r10 != r2) { + /* Next insn is delay slot */ + pc = 0x4535c; + run_45200(); + return; } - case 0x3f378: + case 0x45178: r2 = r7 & 3; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3f364; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x45164; continue; } - r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; + r2 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; r3 = ~(r0 | r4); r2 = r3 & r2; - writePages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff] = r2; - case 0x3f394: + writePages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff] = r2; + case 0x45194: r4 = r4 << 1; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3efa0; - run_3ee00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x44da0; + run_44c00(); + return; } - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3efa0; - run_3ee00(); return; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x44da0; + run_44c00(); + return; } r3 = r2 & r4; r7 = r11 + r0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x3ee9c; - run_3ee00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x44c9c; + run_44c00(); + return; } - case 0x3f3bc: + case 0x451bc: r4 = r4 << 1; r3 = r2 & r4; r7 = r7 + 4; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3f3bc; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x451bc; continue; } - /* Next insn is delay slot */ - pc=0x3ee9c; - run_3ee00(); return; - case 0x3f3d8: + /* Next insn is delay slot */ + pc = 0x44c9c; + run_44c00(); + return; + case 0x451d8: r4 = r19 + r0; - /* Next insn is delay slot */ - r31=0x3f3e4; - pc=0x3f800; - run_3f800(); return; - case 0x3f3e4: + /* Next insn is delay slot */ + r31 = 0x451e4; + pc = 0x45800; + run_45800(); + return; + case 0x451e4: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3ecd0; - run_3ec00(); return; - case 0x3f3f0: - r3 = (r2&0xffffffffL) < (341&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3f45c; - run_3f400(); return; + /* Next insn is delay slot */ + pc = 0x44ad0; + run_44a00(); + return; + case 0x451f0: + r3 = (r2 & 0xffffffffL) < (341 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4525c; + run_45200(); + return; } r8 = r17 >>> 15; - case 0x3f400: - pc=0x3f400; + case 0x45200: + pc = 0x45200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3f400() throws ExecutionException { /* 0x3f400 - 0x3f600 */ + + private final void run_45200() throws ExecutionException { /* 0x45200 - 0x45400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3f400: + for (;;) { + switch (pc) { + case 0x45200: r8 = r8 + 119; r6 = r8 << 1; - /* Next insn is delay slot */ - pc=0x3ed4c; - run_3ec00(); return; - case 0x3f410: + /* Next insn is delay slot */ + pc = 0x44b4c; + run_44a00(); + return; + case 0x45210: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3f088; - run_3f000(); return; - case 0x3f41c: + /* Next insn is delay slot */ + pc = 0x44e88; + run_44e00(); + return; + case 0x4521c: r2 = r0 + 1; r4 = r4 >> 2; - r4 = r2 << (r4&0x1f); - r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; + r4 = r2 << (r4 & 0x1f); + r2 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; r2 = r4 | r2; - writePages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff] = r2; + writePages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff] = r2; r4 = r3 + r0; - /* Next insn is delay slot */ - pc=0x3f254; - run_3f200(); return; - case 0x3f444: + /* Next insn is delay slot */ + pc = 0x45054; + run_45000(); + return; + case 0x45244: r2 = r0 + 1; - writePages[(r20+4)>>>12][((r20+4)>>>2)&0x3ff] = r2; + writePages[(r20 + 4) >>> 12][((r20 + 4) >>> 2) & 0x3ff] = r2; r16 = r20 + r0; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3f16c; - run_3f000(); return; - case 0x3f45c: - r2 = (r2&0xffffffffL) < (1365&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3f49c; + /* Next insn is delay slot */ + pc = 0x44f6c; + run_44e00(); + return; + case 0x4525c: + r2 = (r2 & 0xffffffffL) < (1365 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4529c; continue; } r8 = r17 >>> 18; r8 = r8 + 124; r6 = r8 << 1; - /* Next insn is delay slot */ - pc=0x3ed4c; - run_3ec00(); return; - case 0x3f47c: - r4 = (r3&0xffffffffL) < (85&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3f50c; + /* Next insn is delay slot */ + pc = 0x44b4c; + run_44a00(); + return; + case 0x4527c: + r4 = (r3 & 0xffffffffL) < (85 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4530c; continue; } r4 = r2 >>> 12; r4 = r4 + 110; r5 = r4 << 1; - /* Next insn is delay slot */ - pc=0x3f208; - run_3f200(); return; - case 0x3f49c: + /* Next insn is delay slot */ + pc = 0x45008; + run_45000(); + return; + case 0x4529c: r6 = r0 + 252; r8 = r0 + 126; - /* Next insn is delay slot */ - pc=0x3ed4c; - run_3ec00(); return; - case 0x3f4ac: + /* Next insn is delay slot */ + pc = 0x44b4c; + run_44a00(); + return; + case 0x452ac: r5 = r30 & r4; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x3f054; - run_3f000(); return; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x44e54; + run_44e00(); + return; } - r3 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; + r3 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; r4 = r22 + r21; r4 = r4 | 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x3f128; - run_3f000(); return; - case 0x3f4d0: - writePages[(r28+-31068)>>>12][((r28+-31068)>>>2)&0x3ff] = r20; - /* Next insn is delay slot */ - pc=0x3f070; - run_3f000(); return; - case 0x3f4dc: + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x44f28; + run_44e00(); + return; + case 0x452d0: + writePages[(r28 + -31508) >>> 12][((r28 + -31508) >>> 2) & 0x3ff] = r20; + /* Next insn is delay slot */ + pc = 0x44e70; + run_44e00(); + return; + case 0x452dc: r4 = r19 + r0; r5 = r16 + 8; - /* Next insn is delay slot */ - r31=0x3f4ec; - pc=0x3ca00; - run_3ca00(); return; - case 0x3f4ec: - r2 = 7 << 16; - r2 = readPages[(r2+17968)>>>12][((r2+17968)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x3f128; - run_3f000(); return; - case 0x3f4fc: + /* Next insn is delay slot */ + r31 = 0x452ec; + pc = 0x42c00; + run_42c00(); + return; + case 0x452ec: + r2 = 6 << 16; + r2 = readPages[(r2 + -10368) >>> 12][((r2 + -10368) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x44f28; + run_44e00(); + return; + case 0x452fc: r4 = r0 + 1; r22 = r0 + r0; - /* Next insn is delay slot */ - pc=0x3f0c8; - run_3f000(); return; - case 0x3f50c: - r4 = (r3&0xffffffffL) < (341&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3f52c; + /* Next insn is delay slot */ + pc = 0x44ec8; + run_44e00(); + return; + case 0x4530c: + r4 = (r3 & 0xffffffffL) < (341 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4532c; continue; } r4 = r2 >>> 15; r4 = r4 + 119; r5 = r4 << 1; - /* Next insn is delay slot */ - pc=0x3f208; - run_3f200(); return; - case 0x3f52c: - r3 = (r3&0xffffffffL) < (1365&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x3f54c; + /* Next insn is delay slot */ + pc = 0x45008; + run_45000(); + return; + case 0x4532c: + r3 = (r3 & 0xffffffffL) < (1365 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4534c; continue; } r4 = r2 >>> 18; r4 = r4 + 124; r5 = r4 << 1; - /* Next insn is delay slot */ - pc=0x3f208; - run_3f200(); return; - case 0x3f54c: + /* Next insn is delay slot */ + pc = 0x45008; + run_45000(); + return; + case 0x4534c: r5 = r0 + 252; r4 = r0 + 126; - /* Next insn is delay slot */ - pc=0x3f208; - run_3f200(); return; - case 0x3f55c: - r2 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x3f394; - run_3f200(); return; - case 0x3f600: - pc=0x3f600; + /* Next insn is delay slot */ + pc = 0x45008; + run_45000(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4535c: + r2 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x45194; + run_45000(); + return; + case 0x45400: + pc = 0x45400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3f600() throws ExecutionException { /* 0x3f600 - 0x3f800 */ + + private final void run_45400() throws ExecutionException { /* 0x45400 - 0x45600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3f600: - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x45400: + r2 = (r6 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4549c; + continue; + } + r2 = r4 | r5; + r2 = r2 & 3; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x45470; + continue; + } + case 0x4541c: + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r7 = tmp; + addr = r5 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + if (r7 != r2) { + /* Next insn is delay slot */ + pc = 0x454ac; + continue; + } + r6 = r6 + -1; + r3 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x45454; + continue; + case 0x45440: + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r7 = tmp; + addr = r5 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + r2 = tmp; + r3 = r3 + 1; + if (r7 != r2) { + /* Next insn is delay slot */ + pc = 0x454ac; + continue; + } + case 0x45454: + r4 = r4 + 1; + r5 = r5 + 1; + if (r3 != r6) { + /* Next insn is delay slot */ + pc = 0x45440; + continue; + } + case 0x45464: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3f800: - pc=0x3f800; + case 0x45470: + r3 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x4549c; + continue; + } + r6 = r6 + -4; + r2 = (r6 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + r4 = r4 + 4; + r5 = r5 + 4; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x45470; + continue; + } + case 0x4549c: + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x4541c; + continue; + } + /* Next insn is delay slot */ + pc = 0x45464; + continue; + case 0x454ac: + r2 = r7 - r2; + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x45600: + pc = 0x45600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3f800() throws ExecutionException { /* 0x3f800 - 0x3fa00 */ + + private final void run_45600() throws ExecutionException { /* 0x45600 - 0x45800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3f800: - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x45600: + /* Next insn is delay slot */ + pc = r31; return; - case 0x3fa00: - pc=0x3fa00; + case 0x45800: + pc = 0x45800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3fa00() throws ExecutionException { /* 0x3fa00 - 0x3fc00 */ + + private final void run_45800() throws ExecutionException { /* 0x45800 - 0x45a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3fa00: + for (;;) { + switch (pc) { + case 0x45800: + /* Next insn is delay slot */ + pc = r31; + return; + case 0x45a00: + pc = 0x45a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_45a00() throws ExecutionException { /* 0x45a00 - 0x45c00 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x45a00: r29 = r29 + -32; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r6; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r7; - r6 = r5 + r0; - r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - r7 = r29 + 40; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x3fa28; - pc=0x45c00; - run_45c00(); return; - case 0x3fa28: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x3fc00: - pc=0x3fc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_3fc00() throws ExecutionException { /* 0x3fc00 - 0x3fe00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x3fc00: - r29 = r29 + -32; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r6; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r6; r6 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r7; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r5; - r5 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r5; + r5 = readPages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff]; r7 = r29 + 36; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x3fc30; - pc=0x45c00; - run_45c00(); return; - case 0x3fc30: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r7; + /* Next insn is delay slot */ + r31 = 0x45a30; + pc = 0x4ae00; + run_4ae00(); + return; + case 0x45a30: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3fe00: - pc=0x3fe00; + case 0x45c00: + pc = 0x45c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_3fe00() throws ExecutionException { /* 0x3fe00 - 0x40000 */ + + private final void run_45c00() throws ExecutionException { /* 0x45c00 - 0x45e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x3fe00: + for (;;) { + switch (pc) { + case 0x45c00: r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; r16 = r4 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x3fe28; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x45c28; continue; } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x3fec8; + r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x45cc8; continue; } - case 0x3fe28: - r2 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; + case 0x45c28: + r2 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; r2 = r2 + -1; - writePages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x3fe74; + writePages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x45c74; continue; } - r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - case 0x3fe54: + r2 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + case 0x45c54: r3 = r2 + 1; - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r3; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + writePages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff] = r3; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r2 = tmp; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x3fe74: - r3 = readPages[(r6+24)>>>12][((r6+24)>>>2)&0x3ff]; + case 0x45c74: + r3 = readPages[(r6 + 24) >>> 12][((r6 + 24) >>> 2) & 0x3ff]; r2 = r2 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x3fee8; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x45ce8; continue; } - r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; + r2 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; r3 = r0 + 10; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r4 = tmp; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x3fe54; + if (r4 != r3) { + /* Next insn is delay slot */ + pc = 0x45c54; continue; } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r4 = r16 + r0; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r5 = r0 + 10; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x48200; - run_48200(); return; - case 0x3fec8: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x3fed8; - pc=0x3a600; - run_3a600(); return; - case 0x3fed8: - r6 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x3fe28; - continue; - case 0x3fee8: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r4 = r16 + r0; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x48200; - run_48200(); return; - case 0x40000: - pc=0x40000; + /* Next insn is delay slot */ + pc = 0x4d200; + run_4d200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x45cc8: + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + r31 = 0x45cd8; + pc = 0x41400; + run_41400(); + return; + case 0x45cd8: + r6 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x45c28; + continue; + case 0x45ce8: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r4 = r16 + r0; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 32; + /* Next insn is delay slot */ + pc = 0x4d200; + run_4d200(); + return; + case 0x45e00: + pc = 0x45e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_40000() throws ExecutionException { /* 0x40000 - 0x40200 */ + + private final void run_45e00() throws ExecutionException { /* 0x45e00 - 0x46000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x40000: - r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - r17 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r16 = r5 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x40034; - continue; - } - r3 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x400cc; - continue; - } - case 0x40034: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r2 = r2 + -1; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x40084; - continue; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - case 0x40060: - r3 = r2 + 1; - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x40084: - r3 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - r2 = r2 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x400dc; - continue; - } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r0 + 10; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r17&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x40060; - continue; - } - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r0 + 10; - /* Next insn is delay slot */ - pc=0x400e4; - continue; - case 0x400cc: - /* Next insn is delay slot */ - r31=0x400d4; - pc=0x3a600; - run_3a600(); return; - case 0x400d4: - /* Next insn is delay slot */ - pc=0x40034; - continue; - case 0x400dc: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r17 + r0; - case 0x400e4: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r6 = r16 + r0; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x48200; - run_48200(); return; - case 0x40200: - pc=0x40200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_40200() throws ExecutionException { /* 0x40200 - 0x40400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x40200: + for (;;) { + switch (pc) { + case 0x45e00: r29 = r29 + -64; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r17; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r17; r17 = r4 + r0; r4 = r5 + r0; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r16; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; r16 = r5 + r0; - /* Next insn is delay slot */ - r31=0x40224; - pc=0x10268; - run_10200(); return; - case 0x40224: - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x45e24; + pc = 0x10268; + run_10200(); + return; + case 0x45e24: + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; r2 = r2 + 1; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r2; r2 = r29 + 16; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; r2 = r0 + 2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r3 = 7 << 16; - r3 = r3 + -7636; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r3; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + r3 = 5 << 16; + r3 = r3 + 20604; + r2 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r3; r3 = r0 + 1; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r3; - addr=r2+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r3; + addr = r2 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; r4 = r3 & 8192; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x40288; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x45e88; continue; } r3 = r3 | 8192; - r4 = readPages[(r2+100)>>>12][((r2+100)>>>2)&0x3ff]; - addr=r2+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + r4 = readPages[(r2 + 100) >>> 12][((r2 + 100) >>> 2) & 0x3ff]; + addr = r2 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + -8193; r3 = r4 & r3; - writePages[(r2+100)>>>12][((r2+100)>>>2)&0x3ff] = r3; - case 0x40288: - r5 = readPages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff]; + writePages[(r2 + 100) >>> 12][((r2 + 100) >>> 2) & 0x3ff] = r3; + case 0x45e88: + r5 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; r4 = r17 + r0; r6 = r29 + 32; - /* Next insn is delay slot */ - r31=0x4029c; - pc=0x59c00; - run_59c00(); return; - case 0x4029c: + /* Next insn is delay slot */ + r31 = 0x45e9c; + pc = 0x50600; + run_50600(); + return; + case 0x45e9c: r3 = r0 + 10; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x402c4; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x45ec4; continue; } - case 0x402a8: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r17 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r16 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; + case 0x45ea8: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; r2 = r3 + r0; r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x402c4: + case 0x45ec4: r3 = r0 + -1; - /* Next insn is delay slot */ - pc=0x402a8; + /* Next insn is delay slot */ + pc = 0x45ea8; continue; - case 0x40400: - pc=0x40400; + case 0x46000: + pc = 0x46000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_40400() throws ExecutionException { /* 0x40400 - 0x40600 */ + + private final void run_46000() throws ExecutionException { /* 0x46000 - 0x46200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x40400: + for (;;) { + switch (pc) { + case 0x46000: r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x40200; - run_40200(); return; - case 0x40600: - pc=0x40600; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x45e00; + run_45e00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x46200: + pc = 0x46200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_40600() throws ExecutionException { /* 0x40600 - 0x40800 */ + + private final void run_46200() throws ExecutionException { /* 0x46200 - 0x46400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x40600: + for (;;) { + switch (pc) { + case 0x46200: r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r6 = r5 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x40800; - run_40800(); return; - case 0x40800: - pc=0x40800; + /* Next insn is delay slot */ + pc = 0x46400; + run_46400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x46400: + pc = 0x46400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_40800() throws ExecutionException { /* 0x40800 - 0x40a00 */ + + private final void run_46400() throws ExecutionException { /* 0x46400 - 0x46600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x40800: + for (;;) { + switch (pc) { + case 0x46400: r29 = r29 + -56; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; r16 = r5 + r0; r20 = r6 + r0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x40b4c; - run_40a00(); return; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x4674c; + run_46600(); + return; } r21 = r4 + r0; - /* Next insn is delay slot */ - r31=0x40848; - pc=0x3f600; - run_3f600(); return; - case 0x40848: - r3 = readPages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x46448; + pc = 0x45600; + run_45600(); + return; + case 0x46448: + r3 = readPages[(r16 + -4) >>> 12][((r16 + -4) >>> 2) & 0x3ff]; r2 = r20 + 11; r17 = r0 + -4; - r4 = (r2&0xffffffffL) < (23&0xffffffffL) ? 1 : 0; + r4 = (r2 & 0xffffffffL) < (23 & 0xffffffffL) ? 1 : 0; r19 = r16 + -8; r17 = r3 & r17; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x4098c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4658c; continue; } r4 = r0 + 16; r18 = r0 + 16; - case 0x40870: + case 0x46470: r2 = ((r18 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x409a0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x465a0; continue; } r2 = r17 < r4 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x409e0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x465e0; continue; } - r23 = 7 << 16; - r23 = r23 + 11104; - r5 = readPages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff]; + r23 = 6 << 16; + r23 = r23 + -16464; + r5 = readPages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff]; r2 = r19 + r17; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x40b84; - run_40a00(); return; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x46784; + run_46600(); + return; } - r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; + r6 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; r7 = r0 + -2; r7 = r6 & r7; r7 = r2 + r7; - r7 = readPages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff]; + r7 = readPages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff]; r7 = r7 & 1; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x409b4; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x465b4; continue; } r6 = r0 + r0; r2 = r0 + r0; - case 0x408cc: + case 0x464cc: r3 = r3 & 1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x40aa4; - run_40a00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x466a4; + run_46600(); + return; } - r22 = readPages[(r16+-8)>>>12][((r16+-8)>>>2)&0x3ff]; + r22 = readPages[(r16 + -8) >>> 12][((r16 + -8) >>> 2) & 0x3ff]; r3 = r0 + -4; r22 = r19 - r22; - r7 = readPages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff]; + r7 = readPages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff]; r3 = r7 & r3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x40c98; - run_40c00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x46898; + run_46800(); + return; } r3 = r3 + r17; - if(r2 == r5) { - /* Next insn is delay slot */ - pc=0x40ca4; - run_40c00(); return; + if (r2 == r5) { + /* Next insn is delay slot */ + pc = 0x468a4; + run_46800(); + return; } r23 = r6 + r3; r5 = r23 < r4 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x40a94; - run_40a00(); return; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x46694; + run_46600(); + return; } - r3 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - case 0x40928: - r2 = readPages[(r22+12)>>>12][((r22+12)>>>2)&0x3ff]; - r3 = readPages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff]; + r3 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r3; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r2; + case 0x46528: + r2 = readPages[(r22 + 12) >>> 12][((r22 + 12) >>> 2) & 0x3ff]; + r3 = readPages[(r22 + 8) >>> 12][((r22 + 8) >>> 2) & 0x3ff]; r6 = r17 + -4; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; - r2 = (r6&0xffffffffL) < (37&0xffffffffL) ? 1 : 0; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r3; + r2 = (r6 & 0xffffffffL) < (37 & 0xffffffffL) ? 1 : 0; r19 = r22 + 8; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x40c70; - run_40c00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x46870; + run_46800(); + return; } - r2 = (r6&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x40be4; - run_40a00(); return; + r2 = (r6 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x467e4; + run_46600(); + return; } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - writePages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - writePages[(r22+12)>>>12][((r22+12)>>>2)&0x3ff] = r2; - r2 = (r6&0xffffffffL) < (28&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x40dc0; - run_40c00(); return; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + writePages[(r22 + 8) >>> 12][((r22 + 8) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + writePages[(r22 + 12) >>> 12][((r22 + 12) >>> 2) & 0x3ff] = r2; + r2 = (r6 & 0xffffffffL) < (28 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x469c0; + run_46800(); + return; } r3 = r22 + 16; r16 = r16 + 8; - /* Next insn is delay slot */ - pc=0x40be8; - run_40a00(); return; - case 0x4098c: + /* Next insn is delay slot */ + pc = 0x467e8; + run_46600(); + return; + case 0x4658c: r18 = r0 + -8; r18 = r2 & r18; r4 = r18 + r0; - if(r18 >= 0) { - /* Next insn is delay slot */ - pc=0x40870; + if (r18 >= 0) { + /* Next insn is delay slot */ + pc = 0x46470; continue; } - case 0x409a0: + case 0x465a0: r2 = r0 + 12; - writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r2; + writePages[(r21 + 0) >>> 12][((r21 + 0) >>> 2) & 0x3ff] = r2; r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x40a20; - run_40a00(); return; - case 0x409b4: + /* Next insn is delay slot */ + pc = 0x46620; + run_46600(); + return; + case 0x465b4: r7 = r0 + -4; r6 = r6 & r7; r7 = r6 + r17; r8 = r7 < r4 ? 1 : 0; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x408cc; + if (r8 != r0) { + /* Next insn is delay slot */ + pc = 0x464cc; continue; } - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r2 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; + r4 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + r2 = readPages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff]; r17 = r7 + r0; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r4; - writePages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff] = r2; - case 0x409e0: + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r4; + writePages[(r4 + 8) >>> 12][((r4 + 8) >>> 2) & 0x3ff] = r2; + case 0x465e0: r6 = r17 - r18; - r2 = (r6&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x40a54; - run_40a00(); return; + r2 = (r6 & 0xffffffffL) < (16 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x46654; + run_46600(); + return; } r3 = r3 & 1; r3 = r3 | r17; - writePages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff] = r3; + writePages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff] = r3; r17 = r19 + r17; - case 0x40a00: - pc=0x40a00; + case 0x46600: + pc = 0x46600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_40a00() throws ExecutionException { /* 0x40a00 - 0x40c00 */ + + private final void run_46600() throws ExecutionException { /* 0x46600 - 0x46800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x40a00: - r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x46600: + r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; r2 = r2 | 1; - writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r2; - case 0x40a10: + writePages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff] = r2; + case 0x46610: r4 = r21 + r0; - /* Next insn is delay slot */ - r31=0x40a1c; - pc=0x3f800; - run_3f800(); return; - case 0x40a1c: - r2 = r16 + r0; - case 0x40a20: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x4661c; + pc = 0x45800; + run_45800(); return; - case 0x40a54: + case 0x4661c: + r2 = r16 + r0; + case 0x46620: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r29 = r29 + 56; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x46654: r3 = r3 & 1; r5 = r19 + r18; r2 = r6 | 1; r18 = r3 | r18; - writePages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff] = r18; + writePages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff] = r18; r6 = r5 + r6; - writePages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff] = r2; - r2 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; + writePages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff]; r4 = r21 + r0; r2 = r2 | 1; - writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r2; + writePages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff] = r2; r5 = r5 + 8; - /* Next insn is delay slot */ - r31=0x40a8c; - pc=0x3ca00; - run_3ca00(); return; - case 0x40a8c: - /* Next insn is delay slot */ - pc=0x40a10; + /* Next insn is delay slot */ + r31 = 0x4668c; + pc = 0x42c00; + run_42c00(); + return; + case 0x4668c: + /* Next insn is delay slot */ + pc = 0x46610; continue; - case 0x40a94: + case 0x46694: r23 = r3 + r0; - case 0x40a98: + case 0x46698: r4 = r23 < r4 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x40928; - run_40800(); return; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x46528; + run_46400(); + return; } - case 0x40aa4: + case 0x466a4: r5 = r20 + r0; r4 = r21 + r0; - /* Next insn is delay slot */ - r31=0x40ab4; - pc=0x3ec00; - run_3ec00(); return; - case 0x40ab4: + /* Next insn is delay slot */ + r31 = 0x466b4; + pc = 0x44a00; + run_44a00(); + return; + case 0x466b4: r20 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x40e8c; - run_40e00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x46a8c; + run_46a00(); + return; } - r3 = readPages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff]; + r3 = readPages[(r16 + -4) >>> 12][((r16 + -4) >>> 2) & 0x3ff]; r4 = r2 + -8; r2 = r0 + -2; r2 = r3 & r2; r2 = r19 + r2; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x40da8; - run_40c00(); return; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x469a8; + run_46800(); + return; } r6 = r17 + -4; - r2 = (r6&0xffffffffL) < (37&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x40c58; - run_40c00(); return; + r2 = (r6 & 0xffffffffL) < (37 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x46858; + run_46800(); + return; } - r2 = (r6&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x40bb0; + r2 = (r6 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x467b0; continue; } r2 = r20 + r0; r3 = r16 + r0; - case 0x40b00: - r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r4; - r4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r4; - r3 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; - case 0x40b24: + case 0x46700: + r4 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r4; + r4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r4; + r3 = readPages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff]; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r3; + case 0x46724: r4 = r21 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x40b34; - pc=0x3ca00; - run_3ca00(); return; - case 0x40b34: + /* Next insn is delay slot */ + r31 = 0x46734; + pc = 0x42c00; + run_42c00(); + return; + case 0x46734: r4 = r21 + r0; - /* Next insn is delay slot */ - r31=0x40b40; - pc=0x3f800; - run_3f800(); return; - case 0x40b40: + /* Next insn is delay slot */ + r31 = 0x46740; + pc = 0x45800; + run_45800(); + return; + case 0x46740: r2 = r20 + r0; - /* Next insn is delay slot */ - pc=0x40a20; + /* Next insn is delay slot */ + pc = 0x46620; continue; - case 0x40b4c: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + case 0x4674c: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r5 = r6 + r0; r29 = r29 + 56; - /* Next insn is delay slot */ - pc=0x3ec00; - run_3ec00(); return; - case 0x40b84: - r6 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x44a00; + run_44a00(); + return; + case 0x46784: + r6 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; r2 = r0 + -4; r6 = r6 & r2; r2 = r6 + r17; r7 = r18 + 16; r7 = r2 < r7 ? 1 : 0; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x40c1c; - run_40c00(); return; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x4681c; + run_46800(); + return; } r2 = r5 + r0; - /* Next insn is delay slot */ - pc=0x408cc; - run_40800(); return; - case 0x40bb0: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - writePages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - writePages[(r20+4)>>>12][((r20+4)>>>2)&0x3ff] = r2; - r2 = (r6&0xffffffffL) < (28&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x40d74; - run_40c00(); return; + /* Next insn is delay slot */ + pc = 0x464cc; + run_46400(); + return; + case 0x467b0: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + writePages[(r20 + 0) >>> 12][((r20 + 0) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + writePages[(r20 + 4) >>> 12][((r20 + 4) >>> 2) & 0x3ff] = r2; + r2 = (r6 & 0xffffffffL) < (28 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x46974; + run_46800(); + return; } r2 = r20 + 8; r3 = r16 + 8; - /* Next insn is delay slot */ - pc=0x40b00; + /* Next insn is delay slot */ + pc = 0x46700; continue; - case 0x40be4: + case 0x467e4: r3 = r19 + r0; - case 0x40be8: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + case 0x467e8: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r17 = r23 + r0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; - case 0x40c00: - pc=0x40c00; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r2; + case 0x46800: + pc = 0x46800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_40c00() throws ExecutionException { /* 0x40c00 - 0x40e00 */ + + private final void run_46800() throws ExecutionException { /* 0x46800 - 0x46a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x40c00: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x46800: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r16 = r19 + r0; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - r3 = readPages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff]; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff]; r19 = r22 + r0; - /* Next insn is delay slot */ - pc=0x409e0; - run_40800(); return; - case 0x40c1c: + /* Next insn is delay slot */ + pc = 0x465e0; + run_46400(); + return; + case 0x4681c: r2 = r2 - r18; r19 = r19 + r18; r2 = r2 | 1; - writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = r19; - writePages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff]; + writePages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff] = r19; + writePages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + -4) >>> 12][((r16 + -4) >>> 2) & 0x3ff]; r4 = r21 + r0; r2 = r2 & 1; r18 = r18 | r2; - writePages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff] = r18; - /* Next insn is delay slot */ - r31=0x40c4c; - pc=0x3f800; - run_3f800(); return; - case 0x40c4c: + writePages[(r16 + -4) >>> 12][((r16 + -4) >>> 2) & 0x3ff] = r18; + /* Next insn is delay slot */ + r31 = 0x4684c; + pc = 0x45800; + run_45800(); + return; + case 0x4684c: r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x40a20; - run_40a00(); return; - case 0x40c58: + /* Next insn is delay slot */ + pc = 0x46620; + run_46600(); + return; + case 0x46858: r4 = r20 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x40c68; - pc=0x5b600; - run_5b600(); return; - case 0x40c68: - /* Next insn is delay slot */ - pc=0x40b24; - run_40a00(); return; - case 0x40c70: + /* Next insn is delay slot */ + r31 = 0x46868; + pc = 0x51600; + run_51600(); + return; + case 0x46868: + /* Next insn is delay slot */ + pc = 0x46724; + run_46600(); + return; + case 0x46870: r4 = r19 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x40c80; - pc=0x5b600; - run_5b600(); return; - case 0x40c80: + /* Next insn is delay slot */ + r31 = 0x46880; + pc = 0x51600; + run_51600(); + return; + case 0x46880: r16 = r19 + r0; - r3 = readPages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff]; + r3 = readPages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff]; r17 = r23 + r0; r19 = r22 + r0; - /* Next insn is delay slot */ - pc=0x409e0; - run_40800(); return; - case 0x40c98: + /* Next insn is delay slot */ + pc = 0x465e0; + run_46400(); + return; + case 0x46898: r23 = r3 + r17; - /* Next insn is delay slot */ - pc=0x40a98; - run_40a00(); return; - case 0x40ca4: + /* Next insn is delay slot */ + pc = 0x46698; + run_46600(); + return; + case 0x468a4: r30 = r6 + r3; r2 = r18 + 16; r2 = r30 < r2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x40a94; - run_40a00(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x46694; + run_46600(); + return; } - r2 = readPages[(r22+12)>>>12][((r22+12)>>>2)&0x3ff]; - r3 = readPages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff]; + r2 = readPages[(r22 + 12) >>> 12][((r22 + 12) >>> 2) & 0x3ff]; + r3 = readPages[(r22 + 8) >>> 12][((r22 + 8) >>> 2) & 0x3ff]; r6 = r17 + -4; - writePages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff] = r2; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; - r2 = (r6&0xffffffffL) < (37&0xffffffffL) ? 1 : 0; + writePages[(r3 + 12) >>> 12][((r3 + 12) >>> 2) & 0x3ff] = r2; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r3; + r2 = (r6 & 0xffffffffL) < (37 & 0xffffffffL) ? 1 : 0; r19 = r22 + 8; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x40e40; - run_40e00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x46a40; + run_46a00(); + return; } - r2 = (r6&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x40e34; - run_40e00(); return; + r2 = (r6 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x46a34; + run_46a00(); + return; } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - writePages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - writePages[(r22+12)>>>12][((r22+12)>>>2)&0x3ff] = r2; - r2 = (r6&0xffffffffL) < (28&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x40e58; - run_40e00(); return; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + writePages[(r22 + 8) >>> 12][((r22 + 8) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + writePages[(r22 + 12) >>> 12][((r22 + 12) >>> 2) & 0x3ff] = r2; + r2 = (r6 & 0xffffffffL) < (28 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x46a58; + run_46a00(); + return; } r3 = r22 + 16; r16 = r16 + 8; - case 0x40d14: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - writePages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff] = r2; - case 0x40d38: + case 0x46914: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + writePages[(r3 + 8) >>> 12][((r3 + 8) >>> 2) & 0x3ff] = r2; + case 0x46938: r2 = r30 - r18; r3 = r22 + r18; r2 = r2 | 1; - writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = r3; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; - r2 = readPages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff]; + writePages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff]; r4 = r21 + r0; r2 = r2 & 1; r18 = r18 | r2; - writePages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff] = r18; - /* Next insn is delay slot */ - r31=0x40d68; - pc=0x3f800; - run_3f800(); return; - case 0x40d68: + writePages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff] = r18; + /* Next insn is delay slot */ + r31 = 0x46968; + pc = 0x45800; + run_45800(); + return; + case 0x46968: r2 = r19 + r0; - /* Next insn is delay slot */ - pc=0x40a20; - run_40a00(); return; - case 0x40d74: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - writePages[(r20+8)>>>12][((r20+8)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - writePages[(r20+12)>>>12][((r20+12)>>>2)&0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x46620; + run_46600(); + return; + case 0x46974: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + writePages[(r20 + 8) >>> 12][((r20 + 8) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + writePages[(r20 + 12) >>> 12][((r20 + 12) >>> 2) & 0x3ff] = r2; r2 = r0 + 36; - if(r6 == r2) { - /* Next insn is delay slot */ - pc=0x40df4; + if (r6 == r2) { + /* Next insn is delay slot */ + pc = 0x469f4; continue; } r2 = r20 + 16; r3 = r16 + 16; - /* Next insn is delay slot */ - pc=0x40b00; - run_40a00(); return; - case 0x40da8: - r4 = readPages[(r20+-4)>>>12][((r20+-4)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x46700; + run_46600(); + return; + case 0x469a8: + r4 = readPages[(r20 + -4) >>> 12][((r20 + -4) >>> 2) & 0x3ff]; r2 = r0 + -4; r2 = r4 & r2; r17 = r17 + r2; - /* Next insn is delay slot */ - pc=0x409e0; - run_40800(); return; - case 0x40dc0: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - writePages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - writePages[(r22+20)>>>12][((r22+20)>>>2)&0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x465e0; + run_46400(); + return; + case 0x469c0: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + writePages[(r22 + 16) >>> 12][((r22 + 16) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + writePages[(r22 + 20) >>> 12][((r22 + 20) >>> 2) & 0x3ff] = r2; r2 = r0 + 36; - if(r6 == r2) { - /* Next insn is delay slot */ - pc=0x40e14; - run_40e00(); return; + if (r6 == r2) { + /* Next insn is delay slot */ + pc = 0x46a14; + run_46a00(); + return; } r3 = r22 + 24; r16 = r16 + 16; - /* Next insn is delay slot */ - pc=0x40be8; - run_40a00(); return; - case 0x40df4: - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - r3 = r16 + 24; - writePages[(r20+16)>>>12][((r20+16)>>>2)&0x3ff] = r2; - case 0x40e00: - pc=0x40e00; + /* Next insn is delay slot */ + pc = 0x467e8; + run_46600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x469f4: + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r3 = r16 + 24; + writePages[(r20 + 16) >>> 12][((r20 + 16) >>> 2) & 0x3ff] = r2; + case 0x46a00: + pc = 0x46a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_40e00() throws ExecutionException { /* 0x40e00 - 0x41000 */ + + private final void run_46a00() throws ExecutionException { /* 0x46a00 - 0x46c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x40e00: - r4 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x46a00: + r4 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; r2 = r20 + 24; - writePages[(r20+20)>>>12][((r20+20)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x40b00; - run_40a00(); return; - case 0x40e14: - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; + writePages[(r20 + 20) >>> 12][((r20 + 20) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x46700; + run_46600(); + return; + case 0x46a14: + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; r3 = r22 + 32; - writePages[(r22+24)>>>12][((r22+24)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; + writePages[(r22 + 24) >>> 12][((r22 + 24) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; r16 = r16 + 24; - writePages[(r22+28)>>>12][((r22+28)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x40be8; - run_40a00(); return; - case 0x40e34: + writePages[(r22 + 28) >>> 12][((r22 + 28) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x467e8; + run_46600(); + return; + case 0x46a34: r3 = r19 + r0; - /* Next insn is delay slot */ - pc=0x40d14; - run_40c00(); return; - case 0x40e40: + /* Next insn is delay slot */ + pc = 0x46914; + run_46800(); + return; + case 0x46a40: r4 = r19 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x40e50; - pc=0x5b600; - run_5b600(); return; - case 0x40e50: - /* Next insn is delay slot */ - pc=0x40d38; - run_40c00(); return; - case 0x40e58: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - writePages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - writePages[(r22+20)>>>12][((r22+20)>>>2)&0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x46a50; + pc = 0x51600; + run_51600(); + return; + case 0x46a50: + /* Next insn is delay slot */ + pc = 0x46938; + run_46800(); + return; + case 0x46a58: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + writePages[(r22 + 16) >>> 12][((r22 + 16) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff]; + writePages[(r22 + 20) >>> 12][((r22 + 20) >>> 2) & 0x3ff] = r2; r2 = r0 + 36; - if(r6 == r2) { - /* Next insn is delay slot */ - pc=0x40ea4; + if (r6 == r2) { + /* Next insn is delay slot */ + pc = 0x46aa4; continue; } r3 = r22 + 24; r16 = r16 + 16; - /* Next insn is delay slot */ - pc=0x40d14; - run_40c00(); return; - case 0x40e8c: - r4 = r21 + r0; - /* Next insn is delay slot */ - r31=0x40e98; - pc=0x3f800; - run_3f800(); return; - case 0x40e98: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x40a20; - run_40a00(); return; - case 0x40ea4: - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - r3 = r22 + 32; - writePages[(r22+24)>>>12][((r22+24)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; - r16 = r16 + 24; - writePages[(r22+28)>>>12][((r22+28)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x40d14; - run_40c00(); return; - case 0x41000: - pc=0x41000; + /* Next insn is delay slot */ + pc = 0x46914; + run_46800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x46a8c: + r4 = r21 + r0; + /* Next insn is delay slot */ + r31 = 0x46a98; + pc = 0x45800; + run_45800(); + return; + case 0x46a98: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x46620; + run_46600(); + return; + case 0x46aa4: + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r3 = r22 + 32; + writePages[(r22 + 24) >>> 12][((r22 + 24) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + r16 = r16 + 24; + writePages[(r22 + 28) >>> 12][((r22 + 28) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x46914; + run_46800(); + return; + case 0x46c00: + pc = 0x46c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_41000() throws ExecutionException { /* 0x41000 - 0x41200 */ + + private final void run_46c00() throws ExecutionException { /* 0x46c00 - 0x46e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x41000: - addr=r4+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + for (;;) { + switch (pc) { + case 0x46c00: + addr = r4 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r3 = tmp; r2 = r0 + 9; r3 = r3 & 9; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x41020; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x46c20; continue; } r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x41020: - /* Next insn is delay slot */ - pc=0x39a00; - run_39a00(); return; - case 0x41200: - pc=0x41200; + case 0x46c20: + /* Next insn is delay slot */ + pc = 0x40e00; + run_40e00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x46e00: + pc = 0x46e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_41200() throws ExecutionException { /* 0x41200 - 0x41400 */ + + private final void run_46e00() throws ExecutionException { /* 0x46e00 - 0x47000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x41200: + for (;;) { + switch (pc) { + case 0x46e00: r29 = r29 + -40; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; r17 = r4 + r0; r16 = r5 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x41238; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x46e38; continue; } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x413a0; + r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x46fa0; continue; } - case 0x41238: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x46e38: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x4126c; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x46e6c; continue; } - r4 = readPages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff]; + r4 = readPages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff]; r2 = r0 + -8193; r3 = r3 | 8192; r2 = r4 & r2; - writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r2; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + writePages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff] = r2; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r3 & 65535; - case 0x4126c: + case 0x46e6c: r4 = r2 & 32; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x4137c; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x46f7c; continue; } r4 = r2 & 4; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x4133c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x46f3c; continue; } - r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x412c4; + r5 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x46ec4; continue; } r2 = r16 + 64; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x412b0; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x46eb0; continue; } r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x412b0; - pc=0x3ca00; - run_3ca00(); return; - case 0x412b0: - r2 = readPages[(r16+60)>>>12][((r16+60)>>>2)&0x3ff]; - writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x4146c; - run_41400(); return; + /* Next insn is delay slot */ + r31 = 0x46eb0; + pc = 0x42c00; + run_42c00(); + return; + case 0x46eb0: + r2 = readPages[(r16 + 60) >>> 12][((r16 + 60) >>> 2) & 0x3ff]; + writePages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4706c; + run_47000(); + return; } - case 0x412c4: - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x41498; - run_41400(); return; + case 0x46ec4: + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x47098; + run_47000(); + return; } - case 0x412d4: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x46ed4: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r19 = tmp; r18 = r19 & 65535; r2 = r18 & 3; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x413b0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x46fb0; continue; } - case 0x412ec: - r6 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - r2 = readPages[(r16+32)>>>12][((r16+32)>>>2)&0x3ff]; - r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; - r7 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r6; + case 0x46eec: + r6 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 32) >>> 12][((r16 + 32) >>> 2) & 0x3ff]; + r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; + r7 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r6; r4 = r17 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x4130c; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x46f0c; return; - case 0x4130c: - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x41364; + case 0x46f0c: + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + if (r2 <= 0) { + /* Next insn is delay slot */ + pc = 0x46f64; continue; } r2 = r0 + r0; - case 0x4131c: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + case 0x46f1c: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x4133c: + case 0x46f3c: r4 = r2 & 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x414b0; - run_41400(); return; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x470b0; + run_47000(); + return; } r2 = r2 & 8; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x4142c; - run_41400(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4702c; + run_47000(); + return; } r3 = r3 | 4; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x412c4; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x46ec4; continue; - case 0x41364: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x413f8; + case 0x46f64: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x46ff8; continue; } - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 | 32; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x4137c: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x46f7c: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r2 = r0 + -1; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x413a0: - /* Next insn is delay slot */ - r31=0x413a8; - pc=0x3a600; - run_3a600(); return; - case 0x413a8: - /* Next insn is delay slot */ - pc=0x41238; + case 0x46fa0: + /* Next insn is delay slot */ + r31 = 0x46fa8; + pc = 0x41400; + run_41400(); + return; + case 0x46fa8: + /* Next insn is delay slot */ + pc = 0x46e38; continue; - case 0x413b0: + case 0x46fb0: r2 = r0 + 1; - r4 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; + r4 = readPages[(r28 + -31516) >>> 12][((r28 + -31516) >>> 2) & 0x3ff]; r5 = 4 << 16; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r5 = r5 + 4096; - /* Next insn is delay slot */ - r31=0x413cc; - pc=0x3d600; - run_3d600(); return; - case 0x413cc: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r5 = r5 + 27648; + /* Next insn is delay slot */ + r31 = 0x46fcc; + pc = 0x43800; + run_43800(); + return; + case 0x46fcc: r18 = r18 & 9; r2 = r0 + 9; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r19&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r18 != r2) { - /* Next insn is delay slot */ - pc=0x412ec; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r19 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r18 != r2) { + /* Next insn is delay slot */ + pc = 0x46eec; continue; } r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x413f0; - pc=0x39400; - run_39400(); return; - case 0x413f0: - /* Next insn is delay slot */ - pc=0x412ec; - continue; - case 0x413f8: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - case 0x41400: - pc=0x41400; + /* Next insn is delay slot */ + r31 = 0x46ff0; + pc = 0x40800; + run_40800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x46ff0: + /* Next insn is delay slot */ + pc = 0x46eec; + continue; + case 0x46ff8: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + r2 = tmp; + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + case 0x47000: + pc = 0x47000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_41400() throws ExecutionException { /* 0x41400 - 0x41600 */ + + private final void run_47000() throws ExecutionException { /* 0x47000 - 0x47200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x41400: + for (;;) { + switch (pc) { + case 0x47000: r2 = r2 | 64; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; r2 = r0 + -1; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x4142c: + case 0x4702c: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x4143c; - pc=0x39800; - run_39800(); return; - case 0x4143c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x4137c; - run_41200(); return; + /* Next insn is delay slot */ + r31 = 0x4703c; + pc = 0x40c00; + run_40c00(); + return; + case 0x4703c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x46f7c; + run_46e00(); + return; } - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r3 = tmp; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r0; r3 = r3 & 65527; r3 = r3 << 16; r3 = r3 >> 16; r3 = r3 | 4; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x412c4; - run_41200(); return; - case 0x4146c: - r2 = readPages[(r16+56)>>>12][((r16+56)>>>2)&0x3ff]; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r0; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x46ec4; + run_46e00(); + return; + case 0x4706c: + r2 = readPages[(r16 + 56) >>> 12][((r16 + 56) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r2 = r0 + r0; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x41498: + case 0x47098: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x414a8; - pc=0x3e600; - run_3e600(); return; - case 0x414a8: - /* Next insn is delay slot */ - pc=0x412d4; - run_41200(); return; - case 0x414b0: + /* Next insn is delay slot */ + r31 = 0x470a8; + pc = 0x44400; + run_44400(); + return; + case 0x470a8: + /* Next insn is delay slot */ + pc = 0x46ed4; + run_46e00(); + return; + case 0x470b0: r2 = r0 + 9; r3 = r3 | 64; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r2; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x4131c; - run_41200(); return; - case 0x41600: - pc=0x41600; + /* Next insn is delay slot */ + pc = 0x46f1c; + run_46e00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x47200: + pc = 0x47200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_41600() throws ExecutionException { /* 0x41600 - 0x41800 */ + + private final void run_47200() throws ExecutionException { /* 0x47200 - 0x47400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x41600: + for (;;) { + switch (pc) { + case 0x47200: r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; r17 = r4 + r0; r16 = r5 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x41630; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x47230; continue; } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x41684; + r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x47284; continue; } - case 0x41630: + case 0x47230: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x41640; - pc=0x41200; - run_41200(); return; - case 0x41640: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x41694; + /* Next insn is delay slot */ + r31 = 0x47240; + pc = 0x46e00; + run_46e00(); + return; + case 0x47240: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x47294; continue; } - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + r2 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r2 = r2 + -1; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r3 = r2 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r2 = tmp; - case 0x4166c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + case 0x4726c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x41684: - /* Next insn is delay slot */ - r31=0x4168c; - pc=0x3a600; - run_3a600(); return; - case 0x4168c: - /* Next insn is delay slot */ - pc=0x41630; + case 0x47284: + /* Next insn is delay slot */ + r31 = 0x4728c; + pc = 0x41400; + run_41400(); + return; + case 0x4728c: + /* Next insn is delay slot */ + pc = 0x47230; continue; - case 0x41694: + case 0x47294: r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x4166c; + /* Next insn is delay slot */ + pc = 0x4726c; continue; - case 0x41800: - pc=0x41800; + case 0x47400: + pc = 0x47400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_41800() throws ExecutionException { /* 0x41800 - 0x41a00 */ + + private final void run_47400() throws ExecutionException { /* 0x47400 - 0x47600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x41800: - r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x41600; - run_41600(); return; - case 0x41a00: - pc=0x41a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_41a00() throws ExecutionException { /* 0x41a00 - 0x41c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x41a00: - r29 = r29 + -144; - writePages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff] = r17; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r16; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r31; - r17 = r4 + r0; - r16 = r6 + r0; - if(r6 < 0) { - /* Next insn is delay slot */ - pc=0x41af4; - continue; - } - r2 = r0 + 520; - addr=r29+28; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r5; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x41aa4; - continue; - } - r2 = r0 + r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - addr=r29+30; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r29 + 160; - r6 = r7 + r0; - r4 = r17 + r0; - r5 = r29 + 16; - r7 = r2 + r0; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x41a6c; - pc=0x43800; - run_43800(); return; - case 0x41a6c: - r3 = r2 < -1 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x41ae4; - continue; - } - case 0x41a78: - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x41a8c; - continue; - } - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x41a8c: - r31 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; - r17 = readPages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff]; - r16 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r29 = r29 + 144; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x41aa4: - r2 = r6 + -1; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - addr=r29+30; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r29 + 160; - r6 = r7 + r0; - r4 = r17 + r0; - r5 = r29 + 16; - r7 = r2 + r0; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x41ad8; - pc=0x43800; - run_43800(); return; - case 0x41ad8: - r3 = r2 < -1 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x41a78; - continue; - } - case 0x41ae4: - r3 = r0 + 139; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x41a78; - continue; - case 0x41af4: - r2 = r0 + 139; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x41a8c; - continue; - case 0x41c00: - pc=0x41c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_41c00() throws ExecutionException { /* 0x41c00 - 0x41e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x41c00: - r29 = r29 + -144; - writePages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff] = r17; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r16; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r31; - r16 = r5 + r0; - writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r7; - r17 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - if(r5 < 0) { - /* Next insn is delay slot */ - pc=0x41ce8; - continue; - } - r2 = r0 + 520; - addr=r29+28; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r4; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x41ca0; - continue; - } - r2 = r0 + r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r7 = r29 + 156; - r2 = r0 + -1; - r4 = r17 + r0; - r5 = r29 + 16; - addr=r29+30; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x41c68; - pc=0x43800; - run_43800(); return; - case 0x41c68: - r3 = r2 < -1 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x41cd8; - continue; - } - case 0x41c74: - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x41c88; - continue; - } - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x41c88: - r31 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; - r17 = readPages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff]; - r16 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r29 = r29 + 144; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x41ca0: - r2 = r5 + -1; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r7 = r29 + 156; - r2 = r0 + -1; - r4 = r17 + r0; - r5 = r29 + 16; - addr=r29+30; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x41ccc; - pc=0x43800; - run_43800(); return; - case 0x41ccc: - r3 = r2 < -1 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x41c74; - continue; - } - case 0x41cd8: - r3 = r0 + 139; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x41c74; - continue; - case 0x41ce8: - r2 = r0 + 139; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x41c88; - continue; - case 0x41e00: - pc=0x41e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_41e00() throws ExecutionException { /* 0x41e00 - 0x42000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x41e00: + for (;;) { + switch (pc) { + case 0x47400: r29 = r29 + -136; r2 = r0 + 520; - addr=r29+28; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 28; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = 32767 << 16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r4; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r4; r2 = r2 | 65535; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r7; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r5; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r7 = r29 + 148; - r2 = r0 + -1; - r5 = r29 + 16; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; - addr=r29+30; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x41e48; - pc=0x43800; - run_43800(); return; - case 0x41e48: - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x42000: - pc=0x42000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_42000() throws ExecutionException { /* 0x42000 - 0x42200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x42000: - r29 = r29 + -136; - r2 = r0 + 520; - addr=r29+28; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = 32767 << 16; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r4; - r2 = r2 | 65535; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r6; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r7; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + writePages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff] = r6; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r2; r7 = r29 + 144; r6 = r5 + r0; r2 = r0 + -1; r5 = r29 + 16; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; - addr=r29+30; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x42054; - pc=0x43800; - run_43800(); return; - case 0x42054: - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; + writePages[(r29 + 132) >>> 12][((r29 + 132) >>> 2) & 0x3ff] = r31; + addr = r29 + 30; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 120) >>> 12][((r29 + 120) >>> 2) & 0x3ff] = r7; + /* Next insn is delay slot */ + r31 = 0x47454; + pc = 0x48a00; + run_48a00(); + return; + case 0x47454: + r3 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r31 = readPages[(r29 + 132) >>> 12][((r29 + 132) >>> 2) & 0x3ff]; r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x42200: - pc=0x42200; + case 0x47600: + pc = 0x47600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_42200() throws ExecutionException { /* 0x42200 - 0x42400 */ + + private final void run_47600() throws ExecutionException { /* 0x47600 - 0x47800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x42200: + for (;;) { + switch (pc) { + case 0x47600: r29 = r29 + -24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; r16 = r5 + r0; - addr=r5+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + addr = r5 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r5 = tmp; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x4221c; - pc=0x488a0; - run_48800(); return; - case 0x4221c: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x42244; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x4761c; + pc = 0x4d690; + run_4d600(); + return; + case 0x4761c: + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x47644; continue; } - r3 = readPages[(r16+80)>>>12][((r16+80)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r3 = readPages[(r16 + 80) >>> 12][((r16 + 80) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r3 = r3 + r2; - writePages[(r16+80)>>>12][((r16+80)>>>2)&0x3ff] = r3; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + writePages[(r16 + 80) >>> 12][((r16 + 80) >>> 2) & 0x3ff] = r3; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x42244: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x47644: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r3 = tmp; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r3 = r3 & 61439; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x42400: - pc=0x42400; + case 0x47800: + pc = 0x47800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_42400() throws ExecutionException { /* 0x42400 - 0x42600 */ + + private final void run_47800() throws ExecutionException { /* 0x47800 - 0x47a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x42400: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x42600: - pc=0x42600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_42600() throws ExecutionException { /* 0x42600 - 0x42800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x42600: - addr=r5+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + for (;;) { + switch (pc) { + case 0x47800: + addr = r5 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r29 = r29 + -40; r3 = r2 & 256; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; r19 = r4 + r0; r16 = r5 + r0; r18 = r6 + r0; r17 = r7 + r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x42650; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x47850; continue; } - addr=r5+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + addr = r5 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r5 = tmp; r6 = r0 + r0; r7 = r0 + 2; - /* Next insn is delay slot */ - r31=0x4264c; - pc=0x489a0; - run_48800(); return; - case 0x4264c: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + /* Next insn is delay slot */ + r31 = 0x4784c; + pc = 0x4d790; + run_4d600(); + return; + case 0x4784c: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; - case 0x42650: + case 0x47850: r3 = r0 + -4097; r2 = r2 & r3; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r4 = r19 + r0; - addr=r16+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + addr = r16 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r5 = tmp; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r6 = r18 + r0; r7 = r17 + r0; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=0x488e0; - run_48800(); return; - case 0x42800: - pc=0x42800; + /* Next insn is delay slot */ + pc = 0x4d6d0; + run_4d600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x47a00: + pc = 0x47a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_42800() throws ExecutionException { /* 0x42800 - 0x42a00 */ + + private final void run_47a00() throws ExecutionException { /* 0x47a00 - 0x47c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x42800: + for (;;) { + switch (pc) { + case 0x47a00: r29 = r29 + -24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; r16 = r5 + r0; - addr=r5+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + addr = r5 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r5 = tmp; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x4281c; - pc=0x489a0; - run_48800(); return; - case 0x4281c: + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x47a1c; + pc = 0x4d790; + run_4d600(); + return; + case 0x47a1c: r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x4284c; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x47a4c; continue; } - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r3 = tmp; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r3 = r3 | 4096; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r16+80)>>>12][((r16+80)>>>2)&0x3ff] = r2; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r16 + 80) >>> 12][((r16 + 80) >>> 2) & 0x3ff] = r2; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x4284c: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x47a4c: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r3 = tmp; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r3 = r3 & 61439; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x42a00: - pc=0x42a00; + case 0x47c00: + pc = 0x47c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_42a00() throws ExecutionException { /* 0x42a00 - 0x42c00 */ + + private final void run_47c00() throws ExecutionException { /* 0x47c00 - 0x47e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x42a00: - addr=r5+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + for (;;) { + switch (pc) { + case 0x47c00: + addr = r5 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r5 = tmp; - /* Next insn is delay slot */ - pc=0x48860; - run_48800(); return; - case 0x42c00: - pc=0x42c00; + /* Next insn is delay slot */ + pc = 0x4d650; + run_4d600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x47e00: + pc = 0x47e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_42c00() throws ExecutionException { /* 0x42c00 - 0x42e00 */ + + private final void run_47e00() throws ExecutionException { /* 0x47e00 - 0x48000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x42c00: + for (;;) { + switch (pc) { + case 0x47e00: r2 = r4 | r5; r2 = r2 & 1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x42c68; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x47e68; continue; } - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r3 = tmp; - /* Next insn is delay slot */ - pc=0x42c44; + /* Next insn is delay slot */ + pc = 0x47e44; continue; - case 0x42c1c: - addr=r4+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + case 0x47e1c: + addr = r4 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r6 = tmp; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x42c54; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x47e54; continue; } - addr=r5+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r5 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r2 = tmp; r5 = r5 + 2; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x42c8c; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x47e8c; continue; } - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r3 = tmp; - if(r6 != r2) { - /* Next insn is delay slot */ - pc=0x42c8c; + if (r6 != r2) { + /* Next insn is delay slot */ + pc = 0x47e8c; continue; } - case 0x42c44: - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + case 0x47e44: + addr = r5 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r2 = tmp; r4 = r4 + 2; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x42c1c; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x47e1c; continue; } - case 0x42c54: + case 0x47e54: r2 = r3 - r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x42c60: - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x42c54; + case 0x47e60: + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x47e54; continue; } - case 0x42c68: + case 0x47e68: r4 = r4 + 1; - addr=r4+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r4 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r3 = tmp; r5 = r5 + 1; - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r5 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r2 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x42c60; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x47e60; continue; } r2 = r3 - r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x42c8c: + case 0x47e8c: r2 = r6 - r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x42e00: - pc=0x42e00; + case 0x48000: + pc = 0x48000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_42e00() throws ExecutionException { /* 0x42e00 - 0x43000 */ + + private final void run_48000() throws ExecutionException { /* 0x48000 - 0x48200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x42e00: + for (;;) { + switch (pc) { + case 0x48000: r3 = r4 | r5; r3 = r3 & 3; r2 = r4 + r0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x42e90; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x48090; continue; } - r6 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; + r6 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; r10 = 65278 << 16; r10 = r10 | 65279; r4 = ~(r0 | r6); @@ -50148,191 +52159,199 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = r4 & r3; r9 = r9 | 32896; r3 = r3 & r9; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x42e90; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x48090; continue; } r3 = r2 + r0; - case 0x42e44: + case 0x48044: r3 = r3 + 4; r5 = r5 + 4; - writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r6; - r6 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; + writePages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff] = r6; + r6 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; r8 = ~(r0 | r6); r7 = r6 + r10; r7 = r8 & r7; r7 = r7 & r9; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x42e44; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x48044; continue; } r5 = r5 + 1; - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r5 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r6 = tmp; r3 = r3 + 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x42e94; + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r6 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x48094; continue; } - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x42e90: + case 0x48090: r3 = r2 + r0; - case 0x42e94: + case 0x48094: r5 = r5 + 1; - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r5 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r6 = tmp; r3 = r3 + 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x42e94; + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r6 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x48094; continue; } - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x43000: - pc=0x43000; + case 0x48200: + pc = 0x48200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_43000() throws ExecutionException { /* 0x43000 - 0x43200 */ + + private final void run_48200() throws ExecutionException { /* 0x48200 - 0x48400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x43000: - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x43098; + for (;;) { + switch (pc) { + case 0x48200: + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x48298; continue; } r2 = r4 | r5; r2 = r2 & 3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x430a4; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x482a4; continue; } - case 0x43018: + case 0x48218: r6 = r6 + -1; - case 0x4301c: - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x4821c: + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r5 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x43158; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x48358; continue; } - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x43098; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x48298; continue; } - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x43098; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x48298; continue; } r2 = r4 + 1; r5 = r5 + 1; r4 = r4 + r6; - /* Next insn is delay slot */ - pc=0x4306c; + /* Next insn is delay slot */ + pc = 0x4826c; continue; - case 0x43054: - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x43098; + case 0x48254: + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x48298; continue; } - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x43098; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x48298; continue; } r2 = r2 + 1; r5 = r5 + 1; - case 0x4306c: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x4826c: + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r6 = tmp; - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r5 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - if(r3 == r6) { - /* Next insn is delay slot */ - pc=0x43054; + if (r3 == r6) { + /* Next insn is delay slot */ + pc = 0x48254; continue; } - case 0x43080: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + case 0x48280: + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r3 = tmp; - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r5 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r2 = tmp; r2 = r3 - r2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x43098: + case 0x48298: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x430a4: - r2 = (r6&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43018; + case 0x482a4: + r2 = (r6 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48218; continue; } - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x43018; + r3 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x48218; continue; } r2 = r6 + -4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x43098; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x48298; continue; } r8 = 65278 << 16; @@ -50343,8116 +52362,8904 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = r6 & r3; r7 = r7 | 32896; r3 = r3 & r7; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x43138; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x48338; continue; } - /* Next insn is delay slot */ - pc=0x43098; + /* Next insn is delay slot */ + pc = 0x48298; continue; - case 0x43100: - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r6 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - if(r3 != r6) { - /* Next insn is delay slot */ - pc=0x43164; + case 0x48300: + r3 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r6 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + if (r3 != r6) { + /* Next insn is delay slot */ + pc = 0x48364; continue; } r2 = r2 + -4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x43098; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x48298; continue; } r6 = r3 + r8; r3 = ~(r0 | r3); r3 = r6 & r3; r3 = r3 & r7; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x43098; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x48298; continue; } - case 0x43138: - r3 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + case 0x48338: + r3 = (r2 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; r4 = r4 + 4; r5 = r5 + 4; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x43100; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x48300; continue; } r6 = r2 + -1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x4301c; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4821c; continue; } - case 0x43158: + case 0x48358: r2 = r4 + r0; - /* Next insn is delay slot */ - pc=0x43080; + /* Next insn is delay slot */ + pc = 0x48280; continue; - case 0x43164: + case 0x48364: r6 = r2 + -1; - /* Next insn is delay slot */ - pc=0x4301c; + /* Next insn is delay slot */ + pc = 0x4821c; continue; - case 0x43200: - pc=0x43200; + case 0x48400: + pc = 0x48400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_43200() throws ExecutionException { /* 0x43200 - 0x43400 */ + + private final void run_48400() throws ExecutionException { /* 0x48400 - 0x48600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x43200: + for (;;) { + switch (pc) { + case 0x48400: r29 = r29 + -8; - r11 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; + r11 = readPages[(r28 + -31500) >>> 12][((r28 + -31500) >>> 2) & 0x3ff]; r2 = r5 + r0; - writePages[(r29+4)>>>12][((r29+4)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - pc=0x4321c; + writePages[(r29 + 4) >>> 12][((r29 + 4) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + pc = 0x4841c; continue; - case 0x43218: + case 0x48418: r2 = r3 + r0; - case 0x4321c: + case 0x4841c: r3 = r2 + 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r8 = tmp; r9 = r11 + r8; - addr=r9+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r9 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r9 = tmp; r9 = r9 & 8; - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x43218; + if (r9 != r0) { + /* Next insn is delay slot */ + pc = 0x48418; continue; } r9 = r0 + 45; - if(r8 == r9) { - /* Next insn is delay slot */ - pc=0x43418; - run_43400(); return; + if (r8 == r9) { + /* Next insn is delay slot */ + pc = 0x48618; + run_48600(); + return; } r9 = r0 + 43; - if(r8 == r9) { - /* Next insn is delay slot */ - pc=0x4342c; - run_43400(); return; + if (r8 == r9) { + /* Next insn is delay slot */ + pc = 0x4862c; + run_48600(); + return; } r25 = r0 + r0; - case 0x4325c: + case 0x4845c: r2 = r0 + -17; r2 = r7 & r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x4339c; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4859c; continue; } r2 = r0 + 48; - if(r8 == r2) { - /* Next insn is delay slot */ - pc=0x43380; + if (r8 == r2) { + /* Next insn is delay slot */ + pc = 0x48580; continue; } - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x4339c; + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x4859c; continue; } r24 = r0 + 10; r7 = r0 + 10; - case 0x43288: - if(r25 == r0) { - /* Next insn is delay slot */ - pc=0x433a8; + case 0x48488: + if (r25 == r0) { + /* Next insn is delay slot */ + pc = 0x485a8; continue; } - case 0x43290: + case 0x48490: r13 = 32768 << 16; - case 0x43294: - if(r24 != r0) { - /* Next insn is delay slot */ - if(r24!=0) { - hi = (int)((r13 & 0xffffffffL) % (r24 & 0xffffffffL)); lo = (int)((r13 & 0xffffffffL) / (r24 & 0xffffffffL)); + case 0x48494: + if (r24 != r0) { + /* Next insn is delay slot */ + if (r24 != 0) { + hi = (int) ((r13 & 0xffffffffL) % (r24 & 0xffffffffL)); + lo = (int) ((r13 & 0xffffffffL) / (r24 & 0xffffffffL)); } - pc=0x432a0; + pc = 0x484a0; continue; } - if(r24!=0) { - hi = (int)((r13 & 0xffffffffL) % (r24 & 0xffffffffL)); lo = (int)((r13 & 0xffffffffL) / (r24 & 0xffffffffL)); + if (r24 != 0) { + hi = (int) ((r13 & 0xffffffffL) % (r24 & 0xffffffffL)); + lo = (int) ((r13 & 0xffffffffL) / (r24 & 0xffffffffL)); } throw new ExecutionException("Break"); - case 0x432a0: + case 0x484a0: r12 = r0 + r0; r2 = r0 + r0; r15 = r0 + 1; r14 = r0 + -1; r16 = hi; r13 = lo; - /* Next insn is delay slot */ - pc=0x43308; + /* Next insn is delay slot */ + pc = 0x48508; continue; - case 0x432c0: + case 0x484c0: r8 = r8 + -48; r9 = r8 < r7 ? 1 : 0; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x43348; + if (r9 == r0) { + /* Next insn is delay slot */ + pc = 0x48548; continue; } - case 0x432d0: - if(r12 == r14) { - /* Next insn is delay slot */ - pc=0x432fc; + case 0x484d0: + if (r12 == r14) { + /* Next insn is delay slot */ + pc = 0x484fc; continue; } r9 = ((r13 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x433c4; + if (r9 != r0) { + /* Next insn is delay slot */ + pc = 0x485c4; continue; } - if(r2 == r13) { - /* Next insn is delay slot */ - pc=0x433b8; + if (r2 == r13) { + /* Next insn is delay slot */ + pc = 0x485b8; continue; } - case 0x432ec: - { long hilo = (r2) * r24; hi = (int) (hilo >>> 32); lo = (int) hilo; } + case 0x484ec: { + long hilo = (long) (r2) * ((long) r24); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r12 = r0 + 1; r2 = lo; r2 = r8 + r2; - case 0x432fc: + case 0x484fc: r3 = r3 + 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r8 = tmp; - case 0x43308: + case 0x48508: r9 = r11 + r8; - addr=r9+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r9 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r9 = tmp; r10 = r9 & 4; - if(r10 != r0) { - /* Next insn is delay slot */ - pc=0x432c0; + if (r10 != r0) { + /* Next insn is delay slot */ + pc = 0x484c0; continue; } r9 = r9 & 3; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x43348; + if (r9 == r0) { + /* Next insn is delay slot */ + pc = 0x48548; continue; } - if(r9 == r15) { - /* Next insn is delay slot */ - pc=0x433d0; + if (r9 == r15) { + /* Next insn is delay slot */ + pc = 0x485d0; continue; } r9 = r0 + 87; r8 = r8 - r9; - case 0x4333c: + case 0x4853c: r9 = r8 < r7 ? 1 : 0; - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x432d0; + if (r9 != r0) { + /* Next insn is delay slot */ + pc = 0x484d0; continue; } - case 0x43348: + case 0x48548: r7 = r0 + -1; - if(r12 == r7) { - /* Next insn is delay slot */ - pc=0x433e0; + if (r12 == r7) { + /* Next insn is delay slot */ + pc = 0x485e0; continue; } - if(r25 != r0) { - /* Next insn is delay slot */ - pc=0x4340c; - run_43400(); return; + if (r25 != r0) { + /* Next insn is delay slot */ + pc = 0x4860c; + run_48600(); + return; } - case 0x4335c: - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x43370; + case 0x4855c: + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x48570; continue; } - if(r12 != r0) { - /* Next insn is delay slot */ - pc=0x43400; - run_43400(); return; + if (r12 != r0) { + /* Next insn is delay slot */ + pc = 0x48600; + run_48600(); + return; } - case 0x4336c: - writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r5; - case 0x43370: - r16 = readPages[(r29+4)>>>12][((r29+4)>>>2)&0x3ff]; + case 0x4856c: + writePages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff] = r5; + case 0x48570: + r16 = readPages[(r29 + 4) >>> 12][((r29 + 4) >>> 2) & 0x3ff]; r29 = r29 + 8; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x43380: - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + case 0x48580: + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r9 = tmp; r2 = r0 + 88; r9 = r9 & 223; - if(r9 == r2) { - /* Next insn is delay slot */ - pc=0x4344c; - run_43400(); return; + if (r9 == r2) { + /* Next insn is delay slot */ + pc = 0x4864c; + run_48600(); + return; } - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x43464; - run_43400(); return; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x48664; + run_48600(); + return; } - case 0x4339c: + case 0x4859c: r24 = r7 + r0; - if(r25 != r0) { - /* Next insn is delay slot */ - pc=0x43290; + if (r25 != r0) { + /* Next insn is delay slot */ + pc = 0x48490; continue; } - case 0x433a8: + case 0x485a8: r13 = 32767 << 16; r13 = r13 | 65535; - /* Next insn is delay slot */ - pc=0x43294; + /* Next insn is delay slot */ + pc = 0x48494; continue; - case 0x433b8: + case 0x485b8: r9 = r16 < r8 ? 1 : 0; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x432ec; + if (r9 == r0) { + /* Next insn is delay slot */ + pc = 0x484ec; continue; } - case 0x433c4: + case 0x485c4: r12 = r0 + -1; - /* Next insn is delay slot */ - pc=0x432fc; + /* Next insn is delay slot */ + pc = 0x484fc; continue; - case 0x433d0: + case 0x485d0: r9 = r0 + 55; r8 = r8 - r9; - /* Next insn is delay slot */ - pc=0x4333c; + /* Next insn is delay slot */ + pc = 0x4853c; continue; - case 0x433e0: - if(r25 != r0) { - /* Next insn is delay slot */ - pc=0x43440; - run_43400(); return; + case 0x485e0: + if (r25 != r0) { + /* Next insn is delay slot */ + pc = 0x48640; + run_48600(); + return; } r2 = 32767 << 16; r2 = r2 | 65535; - case 0x433f0: + case 0x485f0: r5 = r0 + 34; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x43370; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r5; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x48570; continue; } - case 0x43400: - pc=0x43400; + case 0x48600: + pc = 0x48600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_43400() throws ExecutionException { /* 0x43400 - 0x43600 */ + + private final void run_48600() throws ExecutionException { /* 0x48600 - 0x48800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x43400: + for (;;) { + switch (pc) { + case 0x48600: r5 = r3 + -1; - /* Next insn is delay slot */ - pc=0x4336c; - run_43200(); return; - case 0x4340c: + /* Next insn is delay slot */ + pc = 0x4856c; + run_48400(); + return; + case 0x4860c: r2 = r0 - r2; - /* Next insn is delay slot */ - pc=0x4335c; - run_43200(); return; - case 0x43418: + /* Next insn is delay slot */ + pc = 0x4855c; + run_48400(); + return; + case 0x48618: r3 = r2 + 2; - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r2 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r8 = tmp; r25 = r0 + 1; - /* Next insn is delay slot */ - pc=0x4325c; - run_43200(); return; - case 0x4342c: + /* Next insn is delay slot */ + pc = 0x4845c; + run_48400(); + return; + case 0x4862c: r3 = r2 + 2; - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r2 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r8 = tmp; r25 = r0 + r0; - /* Next insn is delay slot */ - pc=0x4325c; - run_43200(); return; - case 0x43440: + /* Next insn is delay slot */ + pc = 0x4845c; + run_48400(); + return; + case 0x48640: r2 = 32768 << 16; - /* Next insn is delay slot */ - pc=0x433f0; - run_43200(); return; - case 0x4344c: - addr=r3+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + /* Next insn is delay slot */ + pc = 0x485f0; + run_48400(); + return; + case 0x4864c: + addr = r3 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r8 = tmp; r24 = r0 + 16; r3 = r3 + 2; r7 = r0 + 16; - /* Next insn is delay slot */ - pc=0x43288; - run_43200(); return; - case 0x43464: + /* Next insn is delay slot */ + pc = 0x48488; + run_48400(); + return; + case 0x48664: r24 = r0 + 8; r7 = r0 + 8; - /* Next insn is delay slot */ - pc=0x43288; - run_43200(); return; - case 0x43600: - pc=0x43600; + /* Next insn is delay slot */ + pc = 0x48488; + run_48400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x48800: + pc = 0x48800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_43600() throws ExecutionException { /* 0x43600 - 0x43800 */ + + private final void run_48800() throws ExecutionException { /* 0x48800 - 0x48a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x43600: + for (;;) { + switch (pc) { + case 0x48800: r3 = r4 + r0; r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r7 = r6 + r0; r5 = r3 + r0; r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x43200; - run_43200(); return; - case 0x43800: - pc=0x43800; + /* Next insn is delay slot */ + pc = 0x48400; + run_48400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x48a00: + pc = 0x48a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_43800() throws ExecutionException { /* 0x43800 - 0x43a00 */ + + private final void run_48a00() throws ExecutionException { /* 0x48a00 - 0x48c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x43800: + for (;;) { + switch (pc) { + case 0x48a00: r29 = r29 + -304; - writePages[(r29+300)>>>12][((r29+300)>>>2)&0x3ff] = r31; - writePages[(r29+288)>>>12][((r29+288)>>>2)&0x3ff] = r22; - writePages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff] = r4; + writePages[(r29 + 300) >>> 12][((r29 + 300) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 288) >>> 12][((r29 + 288) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff] = r4; r22 = r5 + r0; - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r6; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r7; - writePages[(r29+296)>>>12][((r29+296)>>>2)&0x3ff] = r30; - writePages[(r29+292)>>>12][((r29+292)>>>2)&0x3ff] = r23; - writePages[(r29+284)>>>12][((r29+284)>>>2)&0x3ff] = r21; - writePages[(r29+280)>>>12][((r29+280)>>>2)&0x3ff] = r20; - writePages[(r29+276)>>>12][((r29+276)>>>2)&0x3ff] = r19; - writePages[(r29+272)>>>12][((r29+272)>>>2)&0x3ff] = r18; - writePages[(r29+268)>>>12][((r29+268)>>>2)&0x3ff] = r17; - writePages[(r29+264)>>>12][((r29+264)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x43844; - pc=0x5ae00; - run_5ae00(); return; - case 0x43844: - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r6; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 296) >>> 12][((r29 + 296) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 292) >>> 12][((r29 + 292) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 284) >>> 12][((r29 + 284) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 280) >>> 12][((r29 + 280) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 276) >>> 12][((r29 + 276) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 272) >>> 12][((r29 + 272) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 268) >>> 12][((r29 + 268) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 264) >>> 12][((r29 + 264) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x48a44; + pc = 0x51200; + run_51200(); + return; + case 0x48a44: + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; r4 = r2 + r0; - writePages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x4385c; - pc=0x10268; - run_10200(); return; - case 0x4385c: - writePages[(r29+232)>>>12][((r29+232)>>>2)&0x3ff] = r2; - addr=r22+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + writePages[(r29 + 216) >>> 12][((r29 + 216) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x48a5c; + pc = 0x10268; + run_10200(); + return; + case 0x48a5c: + writePages[(r29 + 232) >>> 12][((r29 + 232) >>> 2) & 0x3ff] = r2; + addr = r22 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 & 128; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x43884; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x48a84; continue; } - r2 = readPages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x45464; - run_45400(); return; + r2 = readPages[(r22 + 16) >>> 12][((r22 + 16) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4a664; + run_4a600(); + return; } - case 0x43884: + case 0x48a84: r21 = r29 + 40; - r2 = 7 << 16; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r21; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r0; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r0; - writePages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff] = r0; - writePages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff] = r0; - writePages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff] = r0; - writePages[(r29+240)>>>12][((r29+240)>>>2)&0x3ff] = r0; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r0; - writePages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff] = r0; + r2 = 6 << 16; + writePages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 224) >>> 12][((r29 + 224) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 240) >>> 12][((r29 + 240) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 236) >>> 12][((r29 + 236) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 200) >>> 12][((r29 + 200) >>> 2) & 0x3ff] = r0; r8 = r21 + r0; - r19 = r2 + 652; - case 0x438b8: - r3 = readPages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + r19 = r2 + -27448; + case 0x48ab8: + r3 = readPages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff]; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x43fa4; - run_43e00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x491a4; + run_49000(); + return; } - case 0x438d0: + case 0x48ad0: r3 = r0 + 37; - r16 = readPages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff]; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x438f0; + r16 = readPages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff]; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x48af0; continue; } - /* Next insn is delay slot */ - pc=0x4395c; + /* Next insn is delay slot */ + pc = 0x48b5c; continue; - case 0x438e8: - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x43904; + case 0x48ae8: + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x48b04; continue; } - case 0x438f0: + case 0x48af0: r16 = r16 + 1; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x438e8; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48ae8; continue; } - case 0x43904: - r3 = readPages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff]; + case 0x48b04: + r3 = readPages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff]; r17 = r16 - r3; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x4395c; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x48b5c; continue; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff]; r2 = r2 + r17; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - r2 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; r2 = r2 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r2; r2 = r2 < 8 ? 1 : 0; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r17; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x43a04; - run_43a00(); return; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r17; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x48c04; + run_48c00(); + return; } r8 = r8 + 8; - case 0x4394c: - r3 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; + case 0x48b4c: + r3 = readPages[(r29 + 200) >>> 12][((r29 + 200) >>> 2) & 0x3ff]; r3 = r3 + r17; - writePages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff] = r3; - case 0x4395c: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + writePages[(r29 + 200) >>> 12][((r29 + 200) >>> 2) & 0x3ff] = r3; + case 0x48b5c: + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x43a2c; - run_43a00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x48c2c; + run_48c00(); + return; } r16 = r16 + 1; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r5 = r0 + r0; r30 = r0 + -1; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r0; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r0; r17 = r0 + r0; r6 = r0 + 42; r7 = r0 + r0; - case 0x4398c: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x48b8c: + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r3 = r16 + 1; - case 0x43994: + case 0x48b94: r2 = r18 + -32; - r4 = (r2&0xffffffffL) < (89&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x4452c; - run_44400(); return; + r4 = (r2 & 0xffffffffL) < (89 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4972c; + run_49600(); + return; } - r4 = 7 << 16; + r4 = 6 << 16; r2 = r2 << 2; - r4 = r4 + 280; + r4 = r4 + -27820; r2 = r4 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; return; - case 0x439c4: + case 0x48bc4: r17 = r17 | 16; - case 0x439c8: + case 0x48bc8: r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x4398c; + /* Next insn is delay slot */ + pc = 0x48b8c; continue; - case 0x439d4: - r4 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - r7 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; + case 0x48bd4: + r4 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + r7 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; r2 = r4 + 4; - if(r7 >= 0) { - /* Next insn is delay slot */ - pc=0x4451c; - run_44400(); return; + if (r7 >= 0) { + /* Next insn is delay slot */ + pc = 0x4971c; + run_49600(); + return; } r7 = r0 - r7; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r2; - case 0x439f4: + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r2; + case 0x48bf4: r17 = r17 | 4; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x4398c; + /* Next insn is delay slot */ + pc = 0x48b8c; continue; - case 0x43a00: - pc=0x43a00; + case 0x48c00: + pc = 0x48c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_43a00() throws ExecutionException { /* 0x43a00 - 0x43c00 */ + + private final void run_48c00() throws ExecutionException { /* 0x48c00 - 0x48e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x43a00: - case 0x43a04: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x48c00: + case 0x48c04: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x43a18; - pc=0x5fe00; - run_5fe00(); return; - case 0x43a18: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; + /* Next insn is delay slot */ + r31 = 0x48c18; + pc = 0x53200; + run_53200(); + return; + case 0x48c18: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; continue; } r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x4394c; - run_43800(); return; - case 0x43a2c: - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x43a50; + /* Next insn is delay slot */ + pc = 0x48b4c; + run_48a00(); + return; + case 0x48c2c: + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x48c50; continue; } - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x43a50; - pc=0x5fe00; - run_5fe00(); return; - case 0x43a50: - addr=r22+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + /* Next insn is delay slot */ + r31 = 0x48c50; + pc = 0x53200; + run_53200(); + return; + case 0x48c50: + addr = r22 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x43a9c; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x48c9c; continue; } r2 = r0 + -1; - case 0x43a68: - r31 = readPages[(r29+300)>>>12][((r29+300)>>>2)&0x3ff]; - r30 = readPages[(r29+296)>>>12][((r29+296)>>>2)&0x3ff]; - r23 = readPages[(r29+292)>>>12][((r29+292)>>>2)&0x3ff]; - r22 = readPages[(r29+288)>>>12][((r29+288)>>>2)&0x3ff]; - r21 = readPages[(r29+284)>>>12][((r29+284)>>>2)&0x3ff]; - r20 = readPages[(r29+280)>>>12][((r29+280)>>>2)&0x3ff]; - r19 = readPages[(r29+276)>>>12][((r29+276)>>>2)&0x3ff]; - r18 = readPages[(r29+272)>>>12][((r29+272)>>>2)&0x3ff]; - r17 = readPages[(r29+268)>>>12][((r29+268)>>>2)&0x3ff]; - r16 = readPages[(r29+264)>>>12][((r29+264)>>>2)&0x3ff]; + case 0x48c68: + r31 = readPages[(r29 + 300) >>> 12][((r29 + 300) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 296) >>> 12][((r29 + 296) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 292) >>> 12][((r29 + 292) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 288) >>> 12][((r29 + 288) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 284) >>> 12][((r29 + 284) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 280) >>> 12][((r29 + 280) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 276) >>> 12][((r29 + 276) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 272) >>> 12][((r29 + 272) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 268) >>> 12][((r29 + 268) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 264) >>> 12][((r29 + 264) >>> 2) & 0x3ff]; r29 = r29 + 304; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x43a9c: - r2 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x43a68; + case 0x48c9c: + r2 = readPages[(r29 + 200) >>> 12][((r29 + 200) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x48c68; continue; - case 0x43aa8: + case 0x48ca8: r5 = r0 + 43; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x4398c; - run_43800(); return; - case 0x43ab8: - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - r16 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x48b8c; + run_48a00(); + return; + case 0x48cb8: + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + r16 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r20 = r3 + 4; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x4560c; - run_45600(); return; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x4a80c; + run_4a800(); + return; } r4 = r16 + r0; - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x454e0; - run_45400(); return; + if (r30 < 0) { + /* Next insn is delay slot */ + pc = 0x4a6e0; + run_4a600(); + return; } r5 = r0 + r0; r6 = r30 + r0; - writePages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - r31=0x43af8; - pc=0x5b400; - run_5b400(); return; - case 0x43af8: - r8 = readPages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x458ac; - run_45800(); return; + writePages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff] = r8; + /* Next insn is delay slot */ + r31 = 0x48cf8; + pc = 0x51400; + run_51400(); + return; + case 0x48cf8: + r8 = readPages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4aaac; + run_4aa00(); + return; } r2 = r2 - r16; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r2; r2 = r30 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x43b1c; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x48d1c; continue; } - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r30; - case 0x43b1c: - r2 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x454fc; - run_45400(); return; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r30; + case 0x48d1c: + r2 = readPages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff]; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4a6fc; + run_4a600(); + return; } - case 0x43b2c: - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x48d2c: + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r2; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r20; + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r20; r30 = r0 + r0; - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; - case 0x43b40: - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x43b58; + writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; + case 0x48d40: + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x48d58; continue; } - case 0x43b48: - r2 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; + case 0x48d48: + r2 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; r2 = r2 + 1; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r2; - case 0x43b58: + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r2; + case 0x48d58: r4 = r17 & 2; - writePages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff] = r4; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x43b78; + writePages[(r29 + 192) >>> 12][((r29 + 192) >>> 2) & 0x3ff] = r4; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x48d78; continue; } - r5 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; + r5 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; r5 = r5 + 2; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r5; - case 0x43b78: + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r5; + case 0x48d78: r2 = r17 & 132; - writePages[(r29+204)>>>12][((r29+204)>>>2)&0x3ff] = r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x44550; - run_44400(); return; + writePages[(r29 + 204) >>> 12][((r29 + 204) >>> 2) & 0x3ff] = r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x49750; + run_49600(); + return; } - r4 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; - r5 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; + r4 = readPages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; r20 = r4 - r5; - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x44550; - run_44400(); return; + if (r20 <= 0) { + /* Next insn is delay slot */ + pc = 0x49750; + run_49600(); + return; } r2 = r20 < 17 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45548; - run_45400(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4a748; + run_4a600(); + return; } r4 = r20 + r0; - writePages[(r29+244)>>>12][((r29+244)>>>2)&0x3ff] = r16; + writePages[(r29 + 244) >>> 12][((r29 + 244) >>> 2) & 0x3ff] = r16; r20 = r17 + r0; - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - writePages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff] = r19; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + writePages[(r29 + 220) >>> 12][((r29 + 220) >>> 2) & 0x3ff] = r19; r23 = r0 + 16; - r16 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + r16 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r17 = r4 + r0; - /* Next insn is delay slot */ - pc=0x43bec; + /* Next insn is delay slot */ + pc = 0x48dec; continue; - case 0x43bd8: + case 0x48dd8: r17 = r17 + -16; r4 = r17 < 17 ? 1 : 0; r8 = r8 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x43c48; - run_43c00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x48e48; + run_48e00(); + return; } - case 0x43bec: + case 0x48dec: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r19; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r23; - case 0x43c00: - pc=0x43c00; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r19; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r23; + case 0x48e00: + pc = 0x48e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_43c00() throws ExecutionException { /* 0x43c00 - 0x43e00 */ + + private final void run_48e00() throws ExecutionException { /* 0x48e00 - 0x49000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x43c00: - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x43bd8; - run_43a00(); return; + for (;;) { + switch (pc) { + case 0x48e00: + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x48dd8; + run_48c00(); + return; } r4 = r16 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x43c24; - pc=0x5fe00; - run_5fe00(); return; - case 0x43c24: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x48e24; + pc = 0x53200; + run_53200(); + return; + case 0x48e24: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } r17 = r17 + -16; r4 = r17 < 17 ? 1 : 0; - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r8 = r21 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x43bec; - run_43a00(); return; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x48dec; + run_48c00(); + return; } - case 0x43c48: + case 0x48e48: r4 = r17 + r0; - r16 = readPages[(r29+244)>>>12][((r29+244)>>>2)&0x3ff]; + r16 = readPages[(r29 + 244) >>> 12][((r29 + 244) >>> 2) & 0x3ff]; r17 = r20 + r0; r20 = r4 + r0; - case 0x43c58: + case 0x48e58: r3 = r3 + 1; - r4 = readPages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff]; + r4 = readPages[(r29 + 220) >>> 12][((r29 + 220) >>> 2) & 0x3ff]; r2 = r20 + r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x44c1c; - run_44c00(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r4; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x49e1c; + run_49e00(); + return; } - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r8 = r8 + 8; - case 0x43c88: - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x43cc4; + case 0x48e88: + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x48ec4; continue; } r3 = r29 + 182; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; r3 = r0 + 1; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r2 = r2 + 1; r3 = r3 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x44a50; - run_44a00(); return; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x49c50; + run_49c00(); + return; } r8 = r8 + 8; - case 0x43cc4: - r3 = readPages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x43d08; + case 0x48ec4: + r3 = readPages[(r29 + 192) >>> 12][((r29 + 192) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x48f08; continue; } r3 = r29 + 180; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; r3 = r0 + 2; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r2 = r2 + 2; r3 = r3 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x44a7c; - run_44a00(); return; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x49c7c; + run_49c00(); + return; } r8 = r8 + 8; - case 0x43d08: - r4 = readPages[(r29+204)>>>12][((r29+204)>>>2)&0x3ff]; + case 0x48f08: + r4 = readPages[(r29 + 204) >>> 12][((r29 + 204) >>> 2) & 0x3ff]; r3 = r0 + 128; - if(r4 == r3) { - /* Next insn is delay slot */ - pc=0x448bc; - run_44800(); return; + if (r4 == r3) { + /* Next insn is delay slot */ + pc = 0x49abc; + run_49a00(); + return; } - case 0x43d18: - r3 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; + case 0x48f18: + r3 = readPages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff]; r20 = r30 - r3; - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x43e14; - run_43e00(); return; + if (r20 <= 0) { + /* Next insn is delay slot */ + pc = 0x49014; + run_49000(); + return; } r3 = r20 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x450c0; - run_45000(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4a2c0; + run_4a200(); + return; } - r5 = 7 << 16; - r23 = r5 + 636; + r5 = 6 << 16; + r23 = r5 + -27464; r4 = r23 + r0; - writePages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff] = r16; + writePages[(r29 + 192) >>> 12][((r29 + 192) >>> 2) & 0x3ff] = r16; r23 = r20 + r0; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r20 = r17 + r0; r30 = r0 + 16; - r16 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + r16 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r17 = r4 + r0; - /* Next insn is delay slot */ - pc=0x43d7c; + /* Next insn is delay slot */ + pc = 0x48f7c; continue; - case 0x43d68: + case 0x48f68: r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; r8 = r8 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x43dd8; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x48fd8; continue; } - case 0x43d7c: + case 0x48f7c: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r17; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r30; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x43d68; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r17; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x48f68; continue; } r4 = r16 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x43db4; - pc=0x5fe00; - run_5fe00(); return; - case 0x43db4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x48fb4; + pc = 0x53200; + run_53200(); + return; + case 0x48fb4: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r8 = r21 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x43d7c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x48f7c; continue; } - case 0x43dd8: + case 0x48fd8: r4 = r17 + r0; - r16 = readPages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff]; + r16 = readPages[(r29 + 192) >>> 12][((r29 + 192) >>> 2) & 0x3ff]; r17 = r20 + r0; r20 = r23 + r0; r23 = r4 + r0; - case 0x43dec: + case 0x48fec: r3 = r3 + 1; r2 = r2 + r20; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - case 0x43e00: - pc=0x43e00; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + case 0x49000: + pc = 0x49000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_43e00() throws ExecutionException { /* 0x43e00 - 0x44000 */ + + private final void run_49000() throws ExecutionException { /* 0x49000 - 0x49200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x43e00: - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x44a24; - run_44a00(); return; + for (;;) { + switch (pc) { + case 0x49000: + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x49c24; + run_49c00(); + return; } r8 = r8 + 8; - case 0x43e14: + case 0x49014: r3 = r17 & 256; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x44750; - run_44600(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x49950; + run_49800(); + return; } - r3 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; + r3 = readPages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; r2 = r2 + r3; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; r3 = r3 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x44654; - run_44600(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x49854; + run_49800(); + return; } - case 0x43e4c: + case 0x4904c: r8 = r8 + 8; - case 0x43e50: + case 0x49050: r17 = r17 & 4; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x43f50; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x49150; continue; } - r3 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; - r4 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; + r3 = readPages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; r16 = r3 - r4; - if(r16 <= 0) { - /* Next insn is delay slot */ - pc=0x43f50; + if (r16 <= 0) { + /* Next insn is delay slot */ + pc = 0x49150; continue; } r3 = r16 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x455fc; - run_45400(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4a7fc; + run_4a600(); + return; } - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - writePages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff] = r19; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + writePages[(r29 + 220) >>> 12][((r29 + 220) >>> 2) & 0x3ff] = r19; r17 = r0 + 16; - r18 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x43eac; + r18 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x490ac; continue; - case 0x43e98: + case 0x49098: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; r8 = r8 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x43f08; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49108; continue; } - case 0x43eac: + case 0x490ac: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r19; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r17; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x43e98; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r19; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49098; continue; } r4 = r18 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x43ee4; - pc=0x5fe00; - run_5fe00(); return; - case 0x43ee4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x490e4; + pc = 0x53200; + run_53200(); + return; + case 0x490e4: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r8 = r21 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x43eac; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x490ac; continue; } - case 0x43f08: + case 0x49108: r3 = r3 + 1; - r5 = readPages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff]; + r5 = readPages[(r29 + 220) >>> 12][((r29 + 220) >>> 2) & 0x3ff]; r2 = r2 + r16; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r5; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r16; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x43f50; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r5; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x49150; continue; } - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x43f44; - pc=0x5fe00; - run_5fe00(); return; - case 0x43f44: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x49144; + pc = 0x53200; + run_53200(); + return; + case 0x49144: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - case 0x43f50: - r3 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; - r5 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + case 0x49150: + r3 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff]; r4 = r3 < r5 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x43f6c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4916c; continue; } r3 = r5 + r0; - case 0x43f6c: - r4 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; + case 0x4916c: + r4 = readPages[(r29 + 200) >>> 12][((r29 + 200) >>> 2) & 0x3ff]; r4 = r4 + r3; - writePages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff] = r4; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x44680; - run_44600(); return; + writePages[(r29 + 200) >>> 12][((r29 + 200) >>> 2) & 0x3ff] = r4; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x49880; + run_49800(); + return; } - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r0; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r0; r8 = r21 + r0; - case 0x43f8c: - r3 = readPages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x4918c: + r3 = readPages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff]; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x438d0; - run_43800(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48ad0; + run_48a00(); + return; } - case 0x43fa4: - r16 = readPages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x4395c; - run_43800(); return; - case 0x43fb0: - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x439c8; - run_43800(); return; + case 0x491a4: + r16 = readPages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x48b5c; + run_48a00(); + return; + case 0x491b0: + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x48bc8; + run_48a00(); + return; } r5 = r0 + 32; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x4398c; - run_43800(); return; - case 0x43fc8: - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + /* Next insn is delay slot */ + pc = 0x48b8c; + run_48a00(); + return; + case 0x491c8: + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r4 = r3 + 1; - if(r18 == r6) { - /* Next insn is delay slot */ - pc=0x45b04; - run_45a00(); return; + if (r18 == r6) { + /* Next insn is delay slot */ + pc = 0x4ad04; + run_4ac00(); + return; } r2 = r18 + -48; - r3 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + r3 = (r2 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; r30 = r0 + r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x4401c; - run_44000(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4921c; + run_49200(); + return; } - case 0x43fec: + case 0x491ec: r4 = r4 + 1; r3 = r30 << 1; - addr=r4+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r4 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r30 = r30 << 3; r30 = r3 + r30; - case 0x44000: - pc=0x44000; + case 0x49200: + pc = 0x49200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_44000() throws ExecutionException { /* 0x44000 - 0x44200 */ + + private final void run_49200() throws ExecutionException { /* 0x49200 - 0x49400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x44000: + for (;;) { + switch (pc) { + case 0x49200: r30 = r2 + r30; r2 = r18 + -48; - r3 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x43fec; - run_43e00(); return; + r3 = (r2 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x491ec; + run_49000(); + return; } - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x45454; - run_45400(); return; + if (r30 < 0) { + /* Next insn is delay slot */ + pc = 0x4a654; + run_4a600(); + return; } - case 0x4401c: + case 0x4921c: r3 = r4 + r0; - /* Next insn is delay slot */ - pc=0x43994; - run_43800(); return; - case 0x44028: + /* Next insn is delay slot */ + pc = 0x48b94; + run_48a00(); + return; + case 0x49228: r17 = r17 | 128; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x4398c; - run_43800(); return; - case 0x44038: + /* Next insn is delay slot */ + pc = 0x48b8c; + run_48a00(); + return; + case 0x49238: r7 = r0 + r0; r2 = r18 + -48; - case 0x44040: + case 0x49240: r3 = r3 + 1; r4 = r7 << 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r7 = r7 << 3; r7 = r4 + r7; r7 = r7 + r2; r2 = r18 + -48; - r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44040; + r4 = (r2 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49240; continue; } - /* Next insn is delay slot */ - pc=0x43994; - run_43800(); return; - case 0x44070: + /* Next insn is delay slot */ + pc = 0x48b94; + run_48a00(); + return; + case 0x49270: r17 = r17 | 16; r2 = r17 & 16; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x444ec; - run_44400(); return; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x496ec; + run_49600(); + return; } - case 0x44088: - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; + case 0x49288: + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; r4 = r0 + r0; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - case 0x440a4: - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x440b4; + case 0x492a4: + if (r30 < 0) { + /* Next insn is delay slot */ + pc = 0x492b4; continue; } r5 = r0 + -129; r17 = r17 & r5; - case 0x440b4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x446ac; - run_44600(); return; + case 0x492b4: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x498ac; + run_49800(); + return; } - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x446ac; - run_44600(); return; + if (r30 != r0) { + /* Next insn is delay slot */ + pc = 0x498ac; + run_49800(); + return; } - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44ad0; - run_44a00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49cd0; + run_49c00(); + return; } r2 = r17 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x44ad0; - run_44a00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x49cd0; + run_49c00(); + return; } r2 = r0 + 48; - addr=r29+143; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 143; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 + 1; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r2; r16 = r29 + 143; - case 0x440ec: - r2 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; + case 0x492ec: + r2 = readPages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff]; r4 = r2 < r30 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x44104; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x49304; continue; } r2 = r30 + r0; - case 0x44104: - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r2; - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x43b40; - run_43a00(); return; - case 0x44114: + case 0x49304: + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x48d40; + run_48c00(); + return; + case 0x49314: r17 = r17 | 16; r2 = r17 & 16; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x444a8; - run_44400(); return; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x496a8; + run_49600(); + return; } - case 0x4412c: - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; + case 0x4932c: + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; r4 = r0 + 1; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x440a4; + /* Next insn is delay slot */ + pc = 0x492a4; continue; - case 0x44150: - r2 = 7 << 16; - r2 = r2 + 228; - writePages[(r29+240)>>>12][((r29+240)>>>2)&0x3ff] = r2; + case 0x49350: + r2 = 6 << 16; + r2 = r2 + -27868; + writePages[(r29 + 240) >>> 12][((r29 + 240) >>> 2) & 0x3ff] = r2; r2 = r17 & 16; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x44390; - run_44200(); return; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x49590; + run_49400(); + return; } - case 0x44174: - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + case 0x49374: + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - case 0x44188: + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + case 0x49388: r3 = r17 & 1; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x44ae0; - run_44a00(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x49ce0; + run_49c00(); + return; } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x44ae0; - run_44a00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x49ce0; + run_49c00(); + return; } r3 = r0 + 48; - addr=r29+180; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r29+181; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 180; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + addr = r29 + 181; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r17 = r17 | 2; r4 = r0 + 2; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x440a4; + /* Next insn is delay slot */ + pc = 0x492a4; continue; - case 0x441c0: + case 0x493c0: r2 = r17 & 16; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x4432c; - run_44200(); return; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4952c; + run_49400(); + return; } - case 0x441d8: - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + case 0x493d8: + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - case 0x441ec: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x44350; - run_44200(); return; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + case 0x493ec: + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x49550; + run_49400(); + return; } - case 0x441f4: - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x493f4: + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r4 = r0 + 1; - /* Next insn is delay slot */ - pc=0x440a4; + /* Next insn is delay slot */ + pc = 0x492a4; continue; - case 0x44200: - pc=0x44200; + case 0x49400: + pc = 0x49400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_44200() throws ExecutionException { /* 0x44200 - 0x44400 */ + + private final void run_49400() throws ExecutionException { /* 0x49400 - 0x49600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x44200: - case 0x44204: + for (;;) { + switch (pc) { + case 0x49400: + case 0x49404: r17 = r17 | 64; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x4398c; - run_43800(); return; - case 0x44214: - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x48b8c; + run_48a00(); + return; + case 0x49414: + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - addr=r29+104; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - case 0x44234: + addr = r29 + 104; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + case 0x49434: r4 = r0 + 1; r5 = r0 + 1; r3 = r0 + r0; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r4; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r5; + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r4; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r5; r30 = r0 + r0; - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; + writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; r16 = r29 + 104; - /* Next insn is delay slot */ - pc=0x43b58; - run_43a00(); return; - case 0x4425c: + /* Next insn is delay slot */ + pc = 0x48d58; + run_48c00(); + return; + case 0x4945c: r17 = r17 | 1; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x4398c; - run_43800(); return; - case 0x4426c: + /* Next insn is delay slot */ + pc = 0x48b8c; + run_48a00(); + return; + case 0x4946c: r2 = r17 & 16; - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x44d6c; - run_44c00(); return; + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x49f6c; + run_49e00(); + return; } r17 = r17 & 64; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x44d6c; - run_44c00(); return; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x49f6c; + run_49e00(); + return; } - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 200) >>> 12][((r29 + 200) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x438b8; - run_43800(); return; - case 0x442bc: - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x48ab8; + run_48a00(); + return; + case 0x494bc: + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r0 + 48; - addr=r29+180; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 180; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + 120; - addr=r29+181; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; + addr = r29 + 181; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; r17 = r17 | 2; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - r3 = 7 << 16; - r3 = r3 + 248; - writePages[(r29+240)>>>12][((r29+240)>>>2)&0x3ff] = r3; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + r3 = 6 << 16; + r3 = r3 + -27848; + writePages[(r29 + 240) >>> 12][((r29 + 240) >>> 2) & 0x3ff] = r3; r4 = r0 + 2; r18 = r0 + 120; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x440a4; - run_44000(); return; - case 0x44310: + /* Next insn is delay slot */ + pc = 0x492a4; + run_49200(); + return; + case 0x49510: r17 = r17 | 16; r2 = r17 & 16; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x441d8; - run_44000(); return; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x493d8; + run_49200(); + return; } - case 0x4432c: + case 0x4952c: r2 = r17 & 64; - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x4506c; - run_45000(); return; + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4a26c; + run_4a200(); + return; } - addr=r3+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + addr = r3 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x441f4; - run_44000(); return; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x493f4; + run_49200(); + return; } - case 0x44350: + case 0x49550: r3 = r0 + 45; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 - r2; r3 = r0 + 45; r4 = r0 + 1; - /* Next insn is delay slot */ - pc=0x440a4; - run_44000(); return; - case 0x4436c: - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - r3 = 7 << 16; - r3 = r3 + 248; + /* Next insn is delay slot */ + pc = 0x492a4; + run_49200(); + return; + case 0x4956c: + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + r3 = 6 << 16; + r3 = r3 + -27848; r2 = r17 & 16; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+240)>>>12][((r29+240)>>>2)&0x3ff] = r3; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x44174; - run_44000(); return; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 240) >>> 12][((r29 + 240) >>> 2) & 0x3ff] = r3; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x49374; + run_49200(); + return; } - case 0x44390: + case 0x49590: r2 = r17 & 64; - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x45058; - run_45000(); return; + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4a258; + run_4a200(); + return; } - addr=r3+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r3 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x44188; - run_44000(); return; - case 0x443b4: + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x49388; + run_49200(); + return; + case 0x495b4: r2 = r17 & 8; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x45044; - run_45000(); return; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4a244; + run_4a200(); + return; } - r4 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; + r4 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; r3 = r4 + 7; - case 0x443d8: + case 0x495d8: r2 = r0 + -8; r2 = r3 & r2; r3 = r2 + 8; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff] = r8; - writePages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff] = f0; - f12 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; - case 0x44400: - pc=0x44400; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + f0 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + f1 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + writePages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff] = r8; + writePages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff] = f0; + f12 = readPages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff]; + case 0x49600: + pc = 0x49600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_44400() throws ExecutionException { /* 0x44400 - 0x44600 */ + + private final void run_49600() throws ExecutionException { /* 0x49600 - 0x49800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x44400: - writePages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff] = f1; - f13 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x44410; - pc=0x37a00; - run_37a00(); return; - case 0x44410: + for (;;) { + switch (pc) { + case 0x49600: + writePages[(r29 + 224) >>> 12][((r29 + 224) >>> 2) & 0x3ff] = f1; + f13 = readPages[(r29 + 224) >>> 12][((r29 + 224) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x49610; + pc = 0x3ee00; + run_3ee00(); + return; + case 0x49610: r3 = r0 + 1; - r8 = readPages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff]; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x44fe4; - run_44e00(); return; + r8 = readPages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff]; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x4a1e4; + run_4a000(); + return; } f0 = r0; - f2 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; + f2 = readPages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff]; f1 = r0; - f3 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x456e0; - run_45600(); return; + f3 = readPages[(r29 + 224) >>> 12][((r29 + 224) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) < (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4a8e0; + run_4a800(); + return; } - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - case 0x44448: + case 0x49648: r2 = r18 < 72 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45444; - run_45400(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4a644; + run_4a600(); + return; } - r16 = 7 << 16; - r16 = r16 + 216; - case 0x4445c: + r16 = 6 << 16; + r16 = r16 + -27880; + case 0x4965c: r2 = r0 + -129; r17 = r17 & r2; r4 = r0 + 3; r2 = r0 + 3; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r2; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r4; + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r4; r30 = r0 + r0; - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x43b40; - run_43a00(); return; - case 0x44484: + writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x48d40; + run_48c00(); + return; + case 0x49684: r17 = r17 | 8; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x4398c; - run_43800(); return; - case 0x44494: + /* Next insn is delay slot */ + pc = 0x48b8c; + run_48a00(); + return; + case 0x49694: r2 = r17 & 16; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x4412c; - run_44000(); return; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4932c; + run_49200(); + return; } - case 0x444a8: + case 0x496a8: r2 = r17 & 64; - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x45080; - run_45000(); return; + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4a280; + run_4a200(); + return; } - addr=r3+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r3 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; r4 = r0 + 1; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x440a4; - run_44000(); return; - case 0x444d8: + /* Next insn is delay slot */ + pc = 0x492a4; + run_49200(); + return; + case 0x496d8: r2 = r17 & 16; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x44088; - run_44000(); return; + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x49288; + run_49200(); + return; } - case 0x444ec: + case 0x496ec: r2 = r17 & 64; - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x450a0; - run_45000(); return; + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4a2a0; + run_4a200(); + return; } - addr=r3+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r3 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; r4 = r0 + r0; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x440a4; - run_44000(); return; - case 0x4451c: - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x492a4; + run_49200(); + return; + case 0x4971c: + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r2; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x4398c; - run_43800(); return; - case 0x4452c: - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r7; - writePages[(r29+312)>>>12][((r29+312)>>>2)&0x3ff] = r3; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x43a2c; - run_43a00(); return; + /* Next insn is delay slot */ + pc = 0x48b8c; + run_48a00(); + return; + case 0x4972c: + writePages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 312) >>> 12][((r29 + 312) >>> 2) & 0x3ff] = r3; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r18 == r0) { + /* Next insn is delay slot */ + pc = 0x48c2c; + run_48c00(); + return; } - addr=r29+104; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x44234; - run_44200(); return; - case 0x44550: - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x43c88; - run_43c00(); return; - case 0x4455c: - r4 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; + addr = r29 + 104; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x49434; + run_49400(); + return; + case 0x49750: + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x48e88; + run_48e00(); + return; + case 0x4975c: + r4 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; r3 = r0 + 1; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; r2 = r2 + 1; r3 = r4 < 2 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x449cc; - run_44800(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x49bcc; + run_49a00(); + return; } - case 0x44580: - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + case 0x49780: + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x44f34; - run_44e00(); return; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4a134; + run_4a000(); + return; } - r4 = readPages[(r29+232)>>>12][((r29+232)>>>2)&0x3ff]; + r4 = readPages[(r29 + 232) >>> 12][((r29 + 232) >>> 2) & 0x3ff]; r8 = r8 + 8; r3 = r3 + 1; - r5 = readPages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff]; + r5 = readPages[(r29 + 216) >>> 12][((r29 + 216) >>> 2) & 0x3ff]; r2 = r2 + r4; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r5; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x44f88; - run_44e00(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4a188; + run_4a000(); + return; } - case 0x445cc: + case 0x497cc: r8 = r8 + 8; - case 0x445d0: + case 0x497d0: f0 = r0; - f2 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; + f2 = readPages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff]; f1 = r0; - f3 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x44c4c; - run_44c00(); return; + f3 = readPages[(r29 + 224) >>> 12][((r29 + 224) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x49e4c; + run_49e00(); + return; } - r5 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; + r5 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; r16 = r16 + 1; r4 = r5 + -1; - case 0x44600: - pc=0x44600; + case 0x49800: + pc = 0x49800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_44600() throws ExecutionException { /* 0x44600 - 0x44800 */ + + private final void run_49800() throws ExecutionException { /* 0x49800 - 0x49a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x44600: - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; + for (;;) { + switch (pc) { + case 0x49800: + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; r2 = r2 + r4; - case 0x4460c: + case 0x4980c: r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x449f4; - run_44800(); return; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x49bf4; + run_49a00(); + return; } - case 0x44624: + case 0x49824: r8 = r8 + 8; - case 0x44628: - r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; + case 0x49828: + r5 = readPages[(r29 + 236) >>> 12][((r29 + 236) >>> 2) & 0x3ff]; r4 = r29 + 164; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r5; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r4; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r5; r2 = r5 + r2; - case 0x4463c: + case 0x4983c: r3 = r3 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x43e4c; - run_43e00(); return; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4904c; + run_49000(); + return; } - case 0x44654: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + case 0x49854: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x44668; - pc=0x5fe00; - run_5fe00(); return; - case 0x44668: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x49868; + pc = 0x53200; + run_53200(); + return; + case 0x49868: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x43e50; - run_43e00(); return; - case 0x44680: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x49050; + run_49000(); + return; + case 0x49880: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x44694; - pc=0x5fe00; - run_5fe00(); return; - case 0x44694: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x49894; + pc = 0x53200; + run_53200(); + return; + case 0x49894: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r0; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r0; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x43f8c; - run_43e00(); return; - case 0x446ac: + /* Next insn is delay slot */ + pc = 0x4918c; + run_49000(); + return; + case 0x498ac: r5 = r0 + 1; - if(r4 == r5) { - /* Next insn is delay slot */ - pc=0x44aa8; - run_44a00(); return; + if (r4 == r5) { + /* Next insn is delay slot */ + pc = 0x49ca8; + run_49c00(); + return; } r6 = r29 + 144; r5 = r0 + 2; r16 = r6 + r0; - if(r4 != r5) { - /* Next insn is delay slot */ - pc=0x44700; + if (r4 != r5) { + /* Next insn is delay slot */ + pc = 0x49900; continue; } - r5 = readPages[(r29+240)>>>12][((r29+240)>>>2)&0x3ff]; - case 0x446d0: + r5 = readPages[(r29 + 240) >>> 12][((r29 + 240) >>> 2) & 0x3ff]; + case 0x498d0: r4 = r2 & 15; r4 = r5 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r4 = tmp; r16 = r16 + -1; r2 = r2 >>> 4; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x446d0; + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x498d0; continue; } - case 0x446f0: + case 0x498f0: r6 = r6 - r16; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x440ec; - run_44000(); return; - case 0x44700: + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + pc = 0x492ec; + run_49200(); + return; + case 0x49900: r4 = r2 & 7; r16 = r16 + -1; r4 = r4 + 48; r2 = r2 >>> 3; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x44700; + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x49900; continue; } r2 = r17 & 1; r5 = r16 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x446f0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x498f0; continue; } r2 = r0 + 48; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x446f0; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x498f0; continue; } r16 = r16 + -1; r6 = r6 - r16; - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x440ec; - run_44000(); return; - case 0x44750: + addr = r5 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + pc = 0x492ec; + run_49200(); + return; + case 0x49950: r18 = r18 < 102 ? 1 : 0; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x4455c; - run_44400(); return; + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x4975c; + run_49600(); + return; } f0 = r0; - f2 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; + f2 = readPages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff]; f1 = r0; - f3 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x44af4; - run_44a00(); return; + f3 = readPages[(r29 + 224) >>> 12][((r29 + 224) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x49cf4; + run_49c00(); + return; } - r3 = 7 << 16; - r3 = r3 + 276; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; + r3 = 5 << 16; + r3 = r3 + 30860; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; r3 = r0 + 1; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r2 = r2 + 1; r3 = r3 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x450d4; - run_45000(); return; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4a2d4; + run_4a200(); + return; } r8 = r8 + 8; - case 0x447b8: - r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - r4 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; + case 0x499b8: + r3 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; r3 = r3 < r4 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x447dc; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x499dc; continue; } r3 = r17 & 1; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x43e50; - run_43e00(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x49050; + run_49000(); + return; } - case 0x447dc: - r3 = readPages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+232)>>>12][((r29+232)>>>2)&0x3ff]; + case 0x499dc: + r3 = readPages[(r29 + 216) >>> 12][((r29 + 216) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 232) >>> 12][((r29 + 232) >>> 2) & 0x3ff]; r2 = r2 + r3; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - case 0x44800: - pc=0x44800; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + case 0x49a00: + pc = 0x49a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_44800() throws ExecutionException { /* 0x44800 - 0x44a00 */ + + private final void run_49a00() throws ExecutionException { /* 0x49a00 - 0x49c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x44800: + for (;;) { + switch (pc) { + case 0x49a00: r3 = r3 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x45418; - run_45400(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4a618; + run_4a600(); + return; } r8 = r8 + 8; - case 0x44818: - r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; + case 0x49a18: + r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; r16 = r3 + -1; - if(r16 <= 0) { - /* Next insn is delay slot */ - pc=0x43e50; - run_43e00(); return; + if (r16 <= 0) { + /* Next insn is delay slot */ + pc = 0x49050; + run_49000(); + return; } r3 = r16 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x44d08; - run_44c00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x49f08; + run_49e00(); + return; } - r5 = 7 << 16; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r23 = r5 + 636; + r5 = 6 << 16; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r23 = r5 + -27464; r18 = r0 + 16; - r20 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x44868; + r20 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x49a68; continue; - case 0x44854: + case 0x49a54: r8 = r8 + 8; - case 0x44858: + case 0x49a58: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44d14; - run_44c00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49f14; + run_49e00(); + return; } - case 0x44868: + case 0x49a68: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44854; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49a54; continue; } r4 = r20 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x448a0; - pc=0x5fe00; - run_5fe00(); return; - case 0x448a0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x49aa0; + pc = 0x53200; + run_53200(); + return; + case 0x49aa0: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x44858; + /* Next insn is delay slot */ + pc = 0x49a58; continue; - case 0x448bc: - r3 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; - r4 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; + case 0x49abc: + r3 = readPages[(r29 + 184) >>> 12][((r29 + 184) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; r20 = r3 - r4; - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x43d18; - run_43c00(); return; + if (r20 <= 0) { + /* Next insn is delay slot */ + pc = 0x48f18; + run_48e00(); + return; } r3 = r20 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x4572c; - run_45600(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4a92c; + run_4a800(); + return; } - r4 = 7 << 16; - r23 = r4 + 636; + r4 = 6 << 16; + r23 = r4 + -27464; r4 = r23 + r0; - writePages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff] = r16; + writePages[(r29 + 192) >>> 12][((r29 + 192) >>> 2) & 0x3ff] = r16; r23 = r20 + r0; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r20 = r17 + r0; r7 = r0 + 16; - r16 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + r16 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r17 = r4 + r0; - /* Next insn is delay slot */ - pc=0x44924; + /* Next insn is delay slot */ + pc = 0x49b24; continue; - case 0x44910: + case 0x49b10: r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; r8 = r8 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44988; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49b88; continue; } - case 0x44924: + case 0x49b24: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r17; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r7; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44910; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r17; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49b10; continue; } r4 = r16 + r0; r5 = r22 + r0; r6 = r29 + 144; - writePages[(r29+256)>>>12][((r29+256)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x44960; - pc=0x5fe00; - run_5fe00(); return; - case 0x44960: - r7 = readPages[(r29+256)>>>12][((r29+256)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + writePages[(r29 + 256) >>> 12][((r29 + 256) >>> 2) & 0x3ff] = r7; + /* Next insn is delay slot */ + r31 = 0x49b60; + pc = 0x53200; + run_53200(); + return; + case 0x49b60: + r7 = readPages[(r29 + 256) >>> 12][((r29 + 256) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r8 = r21 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x44924; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x49b24; continue; } - case 0x44988: + case 0x49b88: r4 = r17 + r0; - r16 = readPages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff]; + r16 = readPages[(r29 + 192) >>> 12][((r29 + 192) >>> 2) & 0x3ff]; r17 = r20 + r0; r20 = r23 + r0; r23 = r4 + r0; - case 0x4499c: + case 0x49b9c: r3 = r3 + 1; r2 = r2 + r20; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x44fb8; - run_44e00(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4a1b8; + run_4a000(); + return; } r8 = r8 + 8; - /* Next insn is delay slot */ - pc=0x43d18; - run_43c00(); return; - case 0x449cc: + /* Next insn is delay slot */ + pc = 0x48f18; + run_48e00(); + return; + case 0x49bcc: r3 = r17 & 1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x44580; - run_44400(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x49780; + run_49600(); + return; } - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44624; - run_44600(); return; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49824; + run_49800(); + return; } - case 0x449f4: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + case 0x49bf4: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - case 0x44a00: - pc=0x44a00; + case 0x49c00: + pc = 0x49c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_44a00() throws ExecutionException { /* 0x44a00 - 0x44c00 */ + + private final void run_49c00() throws ExecutionException { /* 0x49c00 - 0x49e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x44a00: - /* Next insn is delay slot */ - r31=0x44a08; - pc=0x5fe00; - run_5fe00(); return; - case 0x44a08: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + for (;;) { + switch (pc) { + case 0x49c00: + /* Next insn is delay slot */ + r31 = 0x49c08; + pc = 0x53200; + run_53200(); + return; + case 0x49c08: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x44628; - run_44600(); return; - case 0x44a24: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x49828; + run_49800(); + return; + case 0x49c24: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x44a38; - pc=0x5fe00; - run_5fe00(); return; - case 0x44a38: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x49c38; + pc = 0x53200; + run_53200(); + return; + case 0x49c38: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x43e14; - run_43e00(); return; - case 0x44a50: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x49014; + run_49000(); + return; + case 0x49c50: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x44a64; - pc=0x5fe00; - run_5fe00(); return; - case 0x44a64: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x49c64; + pc = 0x53200; + run_53200(); + return; + case 0x49c64: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x43cc4; - run_43c00(); return; - case 0x44a7c: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x48ec4; + run_48e00(); + return; + case 0x49c7c: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x44a90; - pc=0x5fe00; - run_5fe00(); return; - case 0x44a90: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x49c90; + pc = 0x53200; + run_53200(); + return; + case 0x49c90: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x43d08; - run_43c00(); return; - case 0x44aa8: - r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x44d28; - run_44c00(); return; + /* Next insn is delay slot */ + pc = 0x48f08; + run_48e00(); + return; + case 0x49ca8: + r4 = (r2 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x49f28; + run_49e00(); + return; } r2 = r2 + 48; r4 = r0 + 1; - addr=r29+143; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r4; + addr = r29 + 143; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r4; r16 = r29 + 143; - /* Next insn is delay slot */ - pc=0x440ec; - run_44000(); return; - case 0x44ad0: - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x492ec; + run_49200(); + return; + case 0x49cd0: + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r0; r16 = r29 + 144; - /* Next insn is delay slot */ - pc=0x440ec; - run_44000(); return; - case 0x44ae0: + /* Next insn is delay slot */ + pc = 0x492ec; + run_49200(); + return; + case 0x49ce0: r4 = r0 + 2; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x440a4; - run_44000(); return; - case 0x44af4: - r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - if(r3 <= 0) { - /* Next insn is delay slot */ - pc=0x45100; - run_45000(); return; + /* Next insn is delay slot */ + pc = 0x492a4; + run_49200(); + return; + case 0x49cf4: + r3 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + if (r3 <= 0) { + /* Next insn is delay slot */ + pc = 0x4a300; + run_4a200(); + return; } - r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; - r4 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; + r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; r18 = r16 + r3; r20 = r18 - r16; r3 = r4 < r20 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x44b24; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x49d24; continue; } r20 = r4 + r0; - case 0x44b24: - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x44b58; + case 0x49d24: + if (r20 <= 0) { + /* Next insn is delay slot */ + pc = 0x49d58; continue; } - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r2 = r2 + r20; r3 = r3 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x45568; - run_45400(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4a768; + run_4a600(); + return; } r8 = r8 + 8; - case 0x44b58: - if(r20 < 0) { - /* Next insn is delay slot */ - pc=0x4555c; - run_45400(); return; + case 0x49d58: + if (r20 < 0) { + /* Next insn is delay slot */ + pc = 0x4a75c; + run_4a600(); + return; } - case 0x44b60: - r3 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; + case 0x49d60: + r3 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; r20 = r3 - r20; - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x44ddc; - run_44c00(); return; + if (r20 <= 0) { + /* Next insn is delay slot */ + pc = 0x49fdc; + run_49e00(); + return; } r3 = r20 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x45a94; - run_45a00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4ac94; + run_4ac00(); + return; } - r5 = 7 << 16; - r23 = r5 + 636; + r5 = 6 << 16; + r23 = r5 + -27464; r4 = r23 + r0; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r16; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r16; r23 = r20 + r0; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r20 = r18 + r0; r30 = r0 + 16; r18 = r17 + r0; - r16 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + r16 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r17 = r4 + r0; - /* Next insn is delay slot */ - pc=0x44bc8; + /* Next insn is delay slot */ + pc = 0x49dc8; continue; - case 0x44bb4: + case 0x49db4: r8 = r8 + 8; - case 0x44bb8: + case 0x49db8: r23 = r23 + -16; r4 = r23 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44d9c; - run_44c00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49f9c; + run_49e00(); + return; } - case 0x44bc8: + case 0x49dc8: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r17; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r30; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44bb4; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r17; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49db4; continue; } r4 = r16 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x44c00; - pc=0x5fe00; - run_5fe00(); return; - case 0x44c00: - pc=0x44c00; + /* Next insn is delay slot */ + r31 = 0x49e00; + pc = 0x53200; + run_53200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x49e00: + pc = 0x49e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_44c00() throws ExecutionException { /* 0x44c00 - 0x44e00 */ + + private final void run_49e00() throws ExecutionException { /* 0x49e00 - 0x4a000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x44c00: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + for (;;) { + switch (pc) { + case 0x49e00: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x44bb8; - run_44a00(); return; - case 0x44c1c: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x49db8; + run_49c00(); + return; + case 0x49e1c: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x44c30; - pc=0x5fe00; - run_5fe00(); return; - case 0x44c30: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x49e30; + pc = 0x53200; + run_53200(); + return; + case 0x49e30: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x43c88; - run_43c00(); return; - case 0x44c4c: - r4 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x48e88; + run_48e00(); + return; + case 0x49e4c: + r4 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; r16 = r4 + -1; - if(r16 <= 0) { - /* Next insn is delay slot */ - pc=0x44628; - run_44600(); return; + if (r16 <= 0) { + /* Next insn is delay slot */ + pc = 0x49828; + run_49800(); + return; } r4 = r16 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x45a84; - run_45a00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4ac84; + run_4ac00(); + return; } - r4 = 7 << 16; - r23 = r4 + 636; + r4 = 6 << 16; + r23 = r4 + -27464; r18 = r0 + 16; - r20 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x44c98; + r20 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x49e98; continue; - case 0x44c84: + case 0x49e84: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; r8 = r8 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44cf4; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49ef4; continue; } - case 0x44c98: + case 0x49e98: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44c84; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49e84; continue; } r4 = r20 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x44cd0; - pc=0x5fe00; - run_5fe00(); return; - case 0x44cd0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x49ed0; + pc = 0x53200; + run_53200(); + return; + case 0x49ed0: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r8 = r21 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x44c98; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x49e98; continue; } - case 0x44cf4: - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r16; + case 0x49ef4: + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r16; r2 = r2 + r16; - /* Next insn is delay slot */ - pc=0x4460c; - run_44600(); return; - case 0x44d08: - r4 = 7 << 16; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r23 = r4 + 636; - case 0x44d14: - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r16; + /* Next insn is delay slot */ + pc = 0x4980c; + run_49800(); + return; + case 0x49f08: + r4 = 6 << 16; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r23 = r4 + -27464; + case 0x49f14: + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r16; r2 = r2 + r16; - /* Next insn is delay slot */ - pc=0x4463c; - run_44600(); return; - case 0x44d28: + /* Next insn is delay slot */ + pc = 0x4983c; + run_49800(); + return; + case 0x49f28: r6 = r29 + 144; r16 = r6 + r0; r4 = r0 + 10; - case 0x44d34: - if(r4 != r0) { - /* Next insn is delay slot */ - if(r4!=0) { - hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); + case 0x49f34: + if (r4 != r0) { + /* Next insn is delay slot */ + if (r4 != 0) { + hi = (int) ((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); + lo = (int) ((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } - pc=0x44d40; + pc = 0x49f40; continue; } - if(r4!=0) { - hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); + if (r4 != 0) { + hi = (int) ((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); + lo = (int) ((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } throw new ExecutionException("Break"); - case 0x44d40: + case 0x49f40: r16 = r16 + -1; r5 = hi; r5 = r5 + 48; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = lo; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x44d34; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x49f34; continue; } r6 = r6 - r16; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x440ec; - run_44000(); return; - case 0x44d6c: - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + pc = 0x492ec; + run_49200(); + return; + case 0x49f6c: + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 200) >>> 12][((r29 + 200) >>> 2) & 0x3ff]; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x438b8; - run_43800(); return; - case 0x44d9c: + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x48ab8; + run_48a00(); + return; + case 0x49f9c: r4 = r17 + r0; - r16 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; + r16 = readPages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff]; r17 = r18 + r0; r18 = r20 + r0; r20 = r23 + r0; r23 = r4 + r0; - case 0x44db4: + case 0x49fb4: r3 = r3 + 1; r2 = r2 + r20; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x45650; - run_45600(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4a850; + run_4a800(); + return; } r8 = r8 + 8; - case 0x44ddc: - r3 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; - r5 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; + case 0x49fdc: + r3 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; r16 = r16 + r3; - r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; + r3 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; r4 = r3 < r5 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44e08; - run_44e00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4a008; + run_4a000(); + return; } r4 = r17 & 1; - case 0x44e00: - pc=0x44e00; + case 0x4a000: + pc = 0x4a000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_44e00() throws ExecutionException { /* 0x44e00 - 0x45000 */ + + private final void run_4a000() throws ExecutionException { /* 0x4a000 - 0x4a200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x44e00: - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x44e3c; + for (;;) { + switch (pc) { + case 0x4a000: + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4a03c; continue; } - case 0x44e08: - r4 = readPages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff]; - r5 = readPages[(r29+232)>>>12][((r29+232)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; - r4 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + case 0x4a008: + r4 = readPages[(r29 + 216) >>> 12][((r29 + 216) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 232) >>> 12][((r29 + 232) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r4; + r4 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r2 = r2 + r5; r4 = r4 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r4; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r5; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x455cc; - run_45400(); return; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4a7cc; + run_4a600(); + return; } r8 = r8 + 8; - case 0x44e3c: - r4 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; + case 0x4a03c: + r4 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; r18 = r18 - r16; r3 = r4 - r3; r4 = r18 < r3 ? 1 : 0; r20 = r3 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x44e5c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4a05c; continue; } r20 = r18 + r0; - case 0x44e5c: - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x44e90; + case 0x4a05c: + if (r20 <= 0) { + /* Next insn is delay slot */ + pc = 0x4a090; continue; } - r4 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r4 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r2 = r2 + r20; r4 = r4 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r4; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x4567c; - run_45600(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4a87c; + run_4a800(); + return; } r8 = r8 + 8; - case 0x44e90: - if(r20 < 0) { - /* Next insn is delay slot */ - pc=0x456b4; - run_45600(); return; + case 0x4a090: + if (r20 < 0) { + /* Next insn is delay slot */ + pc = 0x4a8b4; + run_4a800(); + return; } - case 0x44e98: + case 0x4a098: r16 = r3 - r20; - if(r16 <= 0) { - /* Next insn is delay slot */ - pc=0x43e50; - run_43e00(); return; + if (r16 <= 0) { + /* Next insn is delay slot */ + pc = 0x49050; + run_49000(); + return; } r3 = r16 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x44d08; - run_44c00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x49f08; + run_49e00(); + return; } - r5 = 7 << 16; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r23 = r5 + 636; + r5 = 6 << 16; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r23 = r5 + -27464; r18 = r0 + 16; - r20 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x44ee0; + r20 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4a0e0; continue; - case 0x44ecc: + case 0x4a0cc: r8 = r8 + 8; - case 0x44ed0: + case 0x4a0d0: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44d14; - run_44c00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x49f14; + run_49e00(); + return; } - case 0x44ee0: + case 0x4a0e0: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x44ecc; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4a0cc; continue; } r4 = r20 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x44f18; - pc=0x5fe00; - run_5fe00(); return; - case 0x44f18: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x4a118; + pc = 0x53200; + run_53200(); + return; + case 0x4a118: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x44ed0; + /* Next insn is delay slot */ + pc = 0x4a0d0; continue; - case 0x44f34: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + case 0x4a134: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x44f48; - pc=0x5fe00; - run_5fe00(); return; - case 0x44f48: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x4a148; + pc = 0x53200; + run_53200(); + return; + case 0x4a148: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r4 = readPages[(r29+232)>>>12][((r29+232)>>>2)&0x3ff]; - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 232) >>> 12][((r29 + 232) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; r8 = r21 + r0; r3 = r3 + 1; - r5 = readPages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff]; + r5 = readPages[(r29 + 216) >>> 12][((r29 + 216) >>> 2) & 0x3ff]; r2 = r2 + r4; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r5; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x445cc; - run_44400(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x497cc; + run_49600(); + return; } - case 0x44f88: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + case 0x4a188: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x44f9c; - pc=0x5fe00; - run_5fe00(); return; - case 0x44f9c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; - } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x445d0; - run_44400(); return; - case 0x44fb8: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; - r5 = r22 + r0; - r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x44fcc; - pc=0x5fe00; - run_5fe00(); return; - case 0x44fcc: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; - } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x43d18; - run_43c00(); return; - case 0x44fe4: - f12 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; - writePages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff] = r8; - f13 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x44ff8; - pc=0x37a00; - run_37a00(); return; - case 0x44ff8: - r8 = readPages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45234; - run_45200(); return; - } - case 0x45000: - pc=0x45000; + /* Next insn is delay slot */ + r31 = 0x4a19c; + pc = 0x53200; + run_53200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4a19c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; + } + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r8 = r21 + r0; + /* Next insn is delay slot */ + pc = 0x497d0; + run_49600(); + return; + case 0x4a1b8: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + r5 = r22 + r0; + r6 = r29 + 144; + /* Next insn is delay slot */ + r31 = 0x4a1cc; + pc = 0x53200; + run_53200(); + return; + case 0x4a1cc: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; + } + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r8 = r21 + r0; + /* Next insn is delay slot */ + pc = 0x48f18; + run_48e00(); + return; + case 0x4a1e4: + f12 = readPages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff]; + writePages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff] = r8; + f13 = readPages[(r29 + 224) >>> 12][((r29 + 224) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x4a1f8; + pc = 0x3ee00; + run_3ee00(); + return; + case 0x4a1f8: + r8 = readPages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4a434; + run_4a400(); + return; + } + case 0x4a200: + pc = 0x4a200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_45000() throws ExecutionException { /* 0x45000 - 0x45200 */ + + private final void run_4a200() throws ExecutionException { /* 0x4a200 - 0x4a400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x45000: + for (;;) { + switch (pc) { + case 0x4a200: r2 = r18 < 72 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45494; - run_45400(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4a694; + run_4a600(); + return; } - r16 = 7 << 16; - r16 = r16 + 224; - case 0x45018: + r16 = 6 << 16; + r16 = r16 + -27872; + case 0x4a218: r2 = r0 + -129; r17 = r17 & r2; r5 = r0 + 3; r2 = r0 + 3; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r5; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r2; r30 = r0 + r0; - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x43b40; - run_43a00(); return; - case 0x45044: - r2 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; + writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x48d40; + run_48c00(); + return; + case 0x4a244: + r2 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; r3 = r2 + 7; - /* Next insn is delay slot */ - pc=0x443d8; - run_44200(); return; - case 0x45058: - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x495d8; + run_49400(); + return; + case 0x4a258: + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x44188; - run_44000(); return; - case 0x4506c: - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x49388; + run_49200(); + return; + case 0x4a26c: + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x441ec; - run_44000(); return; - case 0x45080: - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x493ec; + run_49200(); + return; + case 0x4a280: + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; r4 = r0 + 1; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x440a4; - run_44000(); return; - case 0x450a0: - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x492a4; + run_49200(); + return; + case 0x4a2a0: + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r3; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r3; r4 = r0 + r0; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x440a4; - run_44000(); return; - case 0x450c0: - r4 = 7 << 16; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r23 = r4 + 636; - /* Next insn is delay slot */ - pc=0x43dec; - run_43c00(); return; - case 0x450d4: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x492a4; + run_49200(); + return; + case 0x4a2c0: + r4 = 6 << 16; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r23 = r4 + -27464; + /* Next insn is delay slot */ + pc = 0x48fec; + run_48e00(); + return; + case 0x4a2d4: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x450e8; - pc=0x5fe00; - run_5fe00(); return; - case 0x450e8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x4a2e8; + pc = 0x53200; + run_53200(); + return; + case 0x4a2e8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x447b8; - run_44600(); return; - case 0x45100: - r4 = 7 << 16; - r4 = r4 + 276; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x499b8; + run_49800(); + return; + case 0x4a300: + r4 = 5 << 16; + r4 = r4 + 30860; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r4; r4 = r0 + 1; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; - r4 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; + r4 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r2 = r2 + 1; r4 = r4 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r4; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x454a4; - run_45400(); return; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4a6a4; + run_4a600(); + return; } r8 = r8 + 8; r18 = r3 + r0; - case 0x4513c: - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x45160; + case 0x4a33c: + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x4a360; continue; } - r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x45160; + r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4a360; continue; } r3 = r17 & 1; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x43e50; - run_43e00(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x49050; + run_49000(); + return; } - case 0x45160: - r3 = readPages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+232)>>>12][((r29+232)>>>2)&0x3ff]; + case 0x4a360: + r3 = readPages[(r29 + 216) >>> 12][((r29 + 216) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 232) >>> 12][((r29 + 232) >>> 2) & 0x3ff]; r2 = r2 + r3; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x458e0; - run_45800(); return; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4aae0; + run_4aa00(); + return; } r8 = r8 + 8; - case 0x4519c: + case 0x4a39c: r18 = r0 - r18; - if(r18 <= 0) { - /* Next insn is delay slot */ - pc=0x45530; - run_45400(); return; + if (r18 <= 0) { + /* Next insn is delay slot */ + pc = 0x4a730; + run_4a600(); + return; } r4 = r18 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x45594; - run_45400(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4a794; + run_4a600(); + return; } - r5 = 7 << 16; - r23 = r5 + 636; + r5 = 6 << 16; + r23 = r5 + -27464; r20 = r0 + 16; - r30 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x451e0; + r30 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4a3e0; continue; - case 0x451cc: + case 0x4a3cc: r8 = r8 + 8; - case 0x451d0: + case 0x4a3d0: r18 = r18 + -16; r4 = r18 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x4559c; - run_45400(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4a79c; + run_4a600(); + return; } - case 0x451e0: + case 0x4a3e0: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x451cc; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4a3cc; continue; } - case 0x45200: - pc=0x45200; + case 0x4a400: + pc = 0x4a400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_45200() throws ExecutionException { /* 0x45200 - 0x45400 */ + + private final void run_4a400() throws ExecutionException { /* 0x4a400 - 0x4a600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x45200: + for (;;) { + switch (pc) { + case 0x4a400: r4 = r30 + r0; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x45218; - pc=0x5fe00; - run_5fe00(); return; - case 0x45218: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x4a418; + pc = 0x53200; + run_53200(); + return; + case 0x4a418: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x451d0; - run_45000(); return; - case 0x45234: + /* Next insn is delay slot */ + pc = 0x4a3d0; + run_4a200(); + return; + case 0x4a434: r9 = r0 + -33; r2 = r0 + -1; r20 = r18 & r9; - if(r30 == r2) { - /* Next insn is delay slot */ - pc=0x454d4; - run_45400(); return; + if (r30 == r2) { + /* Next insn is delay slot */ + pc = 0x4a6d4; + run_4a600(); + return; } r2 = r0 + 71; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x458cc; - run_45800(); return; + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x4aacc; + run_4aa00(); + return; } - case 0x45254: - r2 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; + case 0x4a454: + r2 = readPages[(r29 + 224) >>> 12][((r29 + 224) >>> 2) & 0x3ff]; r23 = r17 | 256; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x45914; - run_45800(); return; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4ab14; + run_4aa00(); + return; } - f0 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r0; - f1 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; - writePages[(r29+252)>>>12][((r29+252)>>>2)&0x3ff] = f0; - writePages[(r29+248)>>>12][((r29+248)>>>2)&0x3ff] = f1; - case 0x4527c: + f0 = readPages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff]; + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r0; + f1 = readPages[(r29 + 224) >>> 12][((r29 + 224) >>> 2) & 0x3ff]; + writePages[(r29 + 252) >>> 12][((r29 + 252) >>> 2) & 0x3ff] = f0; + writePages[(r29 + 248) >>> 12][((r29 + 248) >>> 2) & 0x3ff] = f1; + case 0x4a47c: r2 = r0 + 102; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x45740; - run_45600(); return; + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x4a940; + run_4a800(); + return; } r2 = r0 + 70; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x45740; - run_45600(); return; + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x4a940; + run_4a800(); + return; } r2 = r0 + 69; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x4593c; - run_45800(); return; + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x4ab3c; + run_4aa00(); + return; } r5 = r30 + r0; - case 0x452a4: + case 0x4a4a4: r2 = r0 + 2; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; r2 = r29 + 176; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; r2 = r29 + 172; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r2; + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r2 = r29 + 156; - r7 = readPages[(r29+252)>>>12][((r29+252)>>>2)&0x3ff]; - r6 = readPages[(r29+248)>>>12][((r29+248)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r5; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - writePages[(r29+256)>>>12][((r29+256)>>>2)&0x3ff] = r5; - writePages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - r31=0x452e4; - pc=0x57400; - run_57400(); return; - case 0x452e4: + r7 = readPages[(r29 + 252) >>> 12][((r29 + 252) >>> 2) & 0x3ff]; + r6 = readPages[(r29 + 248) >>> 12][((r29 + 248) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 256) >>> 12][((r29 + 256) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff] = r8; + /* Next insn is delay slot */ + r31 = 0x4a4e4; + pc = 0x4e600; + run_4e600(); + return; + case 0x4a4e4: r16 = r2 + r0; r2 = r0 + 103; - r5 = readPages[(r29+256)>>>12][((r29+256)>>>2)&0x3ff]; - r8 = readPages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff]; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x45308; + r5 = readPages[(r29 + 256) >>> 12][((r29 + 256) >>> 2) & 0x3ff]; + r8 = readPages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff]; + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x4a508; continue; } r2 = r0 + 71; - if(r18 != r2) { - /* Next insn is delay slot */ - pc=0x45314; + if (r18 != r2) { + /* Next insn is delay slot */ + pc = 0x4a514; continue; } - case 0x45308: + case 0x4a508: r2 = r17 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x45a6c; - run_45a00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4ac6c; + run_4ac00(); + return; } - case 0x45314: + case 0x4a514: r2 = r0 + 70; r4 = r16 + r5; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x4584c; - run_45800(); return; + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x4aa4c; + run_4aa00(); + return; } - case 0x45324: + case 0x4a524: f0 = r0; - f2 = readPages[(r29+252)>>>12][((r29+252)>>>2)&0x3ff]; + f2 = readPages[(r29 + 252) >>> 12][((r29 + 252) >>> 2) & 0x3ff]; f1 = r0; - f3 = readPages[(r29+248)>>>12][((r29+248)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x45720; - run_45600(); return; + f3 = readPages[(r29 + 248) >>> 12][((r29 + 248) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4a920; + run_4a800(); + return; } - r2 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; + r2 = readPages[(r29 + 156) >>> 12][((r29 + 156) >>> 2) & 0x3ff]; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x45380; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4a580; continue; } r5 = r0 + 48; - case 0x45360: + case 0x4a560: r3 = r2 + 1; - writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r3; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; + writePages[(r29 + 156) >>> 12][((r29 + 156) >>> 2) & 0x3ff] = r3; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r29 + 156) >>> 12][((r29 + 156) >>> 2) & 0x3ff]; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x45360; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4a560; continue; } - case 0x45380: + case 0x4a580: r2 = r2 - r16; - writePages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff] = r2; + writePages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff] = r2; r2 = r0 + 71; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x456f4; - run_45600(); return; + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x4a8f4; + run_4a800(); + return; } r2 = r18 < 102 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45b80; - run_45a00(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4ad80; + run_4ac00(); + return; } - r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; + r3 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; r2 = r0 + 102; - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r3; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x459ac; - run_45800(); return; + writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r3; + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x4abac; + run_4aa00(); + return; } - case 0x453b4: - r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; - r4 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; + case 0x4a5b4: + r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; r2 = r4 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45948; - run_45800(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4ab48; + run_4aa00(); + return; } r17 = r17 & 1; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x45980; - run_45800(); return; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x4ab80; + run_4aa00(); + return; } r2 = r4 + r0; - if(r4 < 0) { - /* Next insn is delay slot */ - pc=0x45b64; - run_45a00(); return; + if (r4 < 0) { + /* Next insn is delay slot */ + pc = 0x4ad64; + run_4ac00(); + return; } - case 0x453e4: - r3 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; + case 0x4a5e4: + r3 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; r18 = r0 + 103; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r3; - case 0x453f0: - r5 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x456c0; - run_45600(); return; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r3; + case 0x4a5f0: + r5 = readPages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff]; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x4a8c0; + run_4a800(); + return; } - case 0x45400: - pc=0x45400; + case 0x4a600: + pc = 0x4a600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_45400() throws ExecutionException { /* 0x45400 - 0x45600 */ + + private final void run_4a600() throws ExecutionException { /* 0x4a600 - 0x4a800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x45400: - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + for (;;) { + switch (pc) { + case 0x4a600: + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r2; + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r2; r17 = r23 + r0; r30 = r0 + r0; - /* Next insn is delay slot */ - pc=0x43b40; - run_43a00(); return; - case 0x45418: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x48d40; + run_48c00(); + return; + case 0x4a618: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x4542c; - pc=0x5fe00; - run_5fe00(); return; - case 0x4542c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x4a62c; + pc = 0x53200; + run_53200(); + return; + case 0x4a62c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x44818; - run_44800(); return; - case 0x45444: - r16 = 7 << 16; - r16 = r16 + 212; - /* Next insn is delay slot */ - pc=0x4445c; - run_44400(); return; - case 0x45454: + /* Next insn is delay slot */ + pc = 0x49a18; + run_49a00(); + return; + case 0x4a644: + r16 = 6 << 16; + r16 = r16 + -27884; + /* Next insn is delay slot */ + pc = 0x4965c; + run_49600(); + return; + case 0x4a654: r30 = r0 + -1; r3 = r4 + r0; - /* Next insn is delay slot */ - pc=0x43994; - run_43800(); return; - case 0x45464: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x48b94; + run_48a00(); + return; + case 0x4a664: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r0 + 64; - /* Next insn is delay slot */ - r31=0x45474; - pc=0x3ec00; - run_3ec00(); return; - case 0x45474: - writePages[(r22+0)>>>12][((r22+0)>>>2)&0x3ff] = r2; - writePages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x45b8c; - run_45a00(); return; + /* Next insn is delay slot */ + r31 = 0x4a674; + pc = 0x44a00; + run_44a00(); + return; + case 0x4a674: + writePages[(r22 + 0) >>> 12][((r22 + 0) >>> 2) & 0x3ff] = r2; + writePages[(r22 + 16) >>> 12][((r22 + 16) >>> 2) & 0x3ff] = r2; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4ad8c; + run_4ac00(); + return; } r2 = r0 + 64; - writePages[(r22+20)>>>12][((r22+20)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x43884; - run_43800(); return; - case 0x45494: - r16 = 7 << 16; - r16 = r16 + 220; - /* Next insn is delay slot */ - pc=0x45018; - run_45000(); return; - case 0x454a4: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + writePages[(r22 + 20) >>> 12][((r22 + 20) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x48a84; + run_48a00(); + return; + case 0x4a694: + r16 = 6 << 16; + r16 = r16 + -27876; + /* Next insn is delay slot */ + pc = 0x4a218; + run_4a200(); + return; + case 0x4a6a4: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x454b8; - pc=0x5fe00; - run_5fe00(); return; - case 0x454b8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x4a6b8; + pc = 0x53200; + run_53200(); + return; + case 0x4a6b8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r18 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; + r18 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x4513c; - run_45000(); return; - case 0x454d4: + /* Next insn is delay slot */ + pc = 0x4a33c; + run_4a200(); + return; + case 0x4a6d4: r30 = r0 + 6; - /* Next insn is delay slot */ - pc=0x45254; - run_45200(); return; - case 0x454e0: - writePages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - r31=0x454ec; - pc=0x10268; - run_10200(); return; - case 0x454ec: - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; - r8 = readPages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff]; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x43b2c; - run_43a00(); return; + /* Next insn is delay slot */ + pc = 0x4a454; + run_4a400(); + return; + case 0x4a6e0: + writePages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff] = r8; + /* Next insn is delay slot */ + r31 = 0x4a6ec; + pc = 0x10268; + run_10200(); + return; + case 0x4a6ec: + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r2; + r8 = readPages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff]; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x48d2c; + run_48c00(); + return; } - case 0x454fc: + case 0x4a6fc: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x43b2c; - run_43a00(); return; - case 0x45508: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x48d2c; + run_48c00(); + return; + case 0x4a708: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x4551c; - pc=0x5fe00; - run_5fe00(); return; - case 0x4551c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x4a71c; + pc = 0x53200; + run_53200(); + return; + case 0x4a71c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r8 = r21 + r0; - case 0x45530: - r4 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; + case 0x4a730: + r4 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; r2 = r4 + r2; - /* Next insn is delay slot */ - pc=0x4463c; - run_44600(); return; - case 0x45548: - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - writePages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff] = r19; - /* Next insn is delay slot */ - pc=0x43c58; - run_43c00(); return; - case 0x4555c: + /* Next insn is delay slot */ + pc = 0x4983c; + run_49800(); + return; + case 0x4a748: + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + writePages[(r29 + 220) >>> 12][((r29 + 220) >>> 2) & 0x3ff] = r19; + /* Next insn is delay slot */ + pc = 0x48e58; + run_48e00(); + return; + case 0x4a75c: r20 = r0 + r0; - /* Next insn is delay slot */ - pc=0x44b60; - run_44a00(); return; - case 0x45568: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x49d60; + run_49c00(); + return; + case 0x4a768: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x4557c; - pc=0x5fe00; - run_5fe00(); return; - case 0x4557c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x4a77c; + pc = 0x53200; + run_53200(); + return; + case 0x4a77c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x44b58; - run_44a00(); return; - case 0x45594: - r4 = 7 << 16; - r23 = r4 + 636; - case 0x4559c: + /* Next insn is delay slot */ + pc = 0x49d58; + run_49c00(); + return; + case 0x4a794: + r4 = 6 << 16; + r23 = r4 + -27464; + case 0x4a79c: r3 = r3 + 1; r2 = r2 + r18; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r3; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x45508; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r3; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4a708; continue; } r8 = r8 + 8; - /* Next insn is delay slot */ - pc=0x45530; + /* Next insn is delay slot */ + pc = 0x4a730; continue; - case 0x455cc: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + case 0x4a7cc: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x455e0; - pc=0x5fe00; - run_5fe00(); return; - case 0x455e0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; - } - r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x44e3c; - run_44e00(); return; - case 0x455fc: - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - case 0x45600: - pc=0x45600; + /* Next insn is delay slot */ + r31 = 0x4a7e0; + pc = 0x53200; + run_53200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4a7e0: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; + } + r3 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r8 = r21 + r0; + /* Next insn is delay slot */ + pc = 0x4a03c; + run_4a000(); + return; + case 0x4a7fc: + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + case 0x4a800: + pc = 0x4a800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_45600() throws ExecutionException { /* 0x45600 - 0x45800 */ + + private final void run_4a800() throws ExecutionException { /* 0x4a800 - 0x4aa00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x45600: - writePages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff] = r19; - /* Next insn is delay slot */ - pc=0x43f08; - run_43e00(); return; - case 0x4560c: - r3 = (r30&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; + for (;;) { + switch (pc) { + case 0x4a800: + writePages[(r29 + 220) >>> 12][((r29 + 220) >>> 2) & 0x3ff] = r19; + /* Next insn is delay slot */ + pc = 0x49108; + run_49000(); + return; + case 0x4a80c: + r3 = (r30 & 0xffffffffL) < (7 & 0xffffffffL) ? 1 : 0; r2 = r30 + r0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x45620; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4a820; continue; } r2 = r0 + 6; - case 0x45620: - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x45a78; - run_45a00(); return; + case 0x4a820: + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4ac78; + run_4ac00(); + return; } - case 0x4562c: - r16 = 7 << 16; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r2; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r20; + case 0x4a82c: + r16 = 6 << 16; + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r20; r3 = r0 + r0; r30 = r0 + r0; - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; - r16 = r16 + 268; - /* Next insn is delay slot */ - pc=0x43b58; - run_43a00(); return; - case 0x45650: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; + r16 = r16 + -27828; + /* Next insn is delay slot */ + pc = 0x48d58; + run_48c00(); + return; + case 0x4a850: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x45664; - pc=0x5fe00; - run_5fe00(); return; - case 0x45664: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x4a864; + pc = 0x53200; + run_53200(); + return; + case 0x4a864: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x44ddc; - run_44c00(); return; - case 0x4567c: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x49fdc; + run_49e00(); + return; + case 0x4a87c: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x45690; - pc=0x5fe00; - run_5fe00(); return; - case 0x45690: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x4a890; + pc = 0x53200; + run_53200(); + return; + case 0x4a890: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - r5 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; + r3 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; r3 = r5 - r3; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x44e90; - run_44e00(); return; - case 0x456b4: + /* Next insn is delay slot */ + pc = 0x4a090; + run_4a000(); + return; + case 0x4a8b4: r20 = r0 + r0; - /* Next insn is delay slot */ - pc=0x44e98; - run_44e00(); return; - case 0x456c0: + /* Next insn is delay slot */ + pc = 0x4a098; + run_4a000(); + return; + case 0x4a8c0: r3 = r0 + 45; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r2; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r2; r17 = r23 + r0; r3 = r0 + 45; r30 = r0 + r0; - /* Next insn is delay slot */ - pc=0x43b48; - run_43a00(); return; - case 0x456e0: + /* Next insn is delay slot */ + pc = 0x48d48; + run_48c00(); + return; + case 0x4a8e0: r2 = r0 + 45; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + 45; - /* Next insn is delay slot */ - pc=0x44448; - run_44400(); return; - case 0x456f4: - r2 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x49648; + run_49600(); + return; + case 0x4a8f4: + r2 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; r3 = r2 < -3 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x45790; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4a990; continue; } r3 = r30 < r2 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x45790; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4a990; continue; } - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x453b4; - run_45200(); return; - case 0x45720: + writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x4a5b4; + run_4a400(); + return; + case 0x4a920: r2 = r4 + r0; - /* Next insn is delay slot */ - pc=0x45380; - run_45200(); return; - case 0x4572c: - r5 = 7 << 16; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r23 = r5 + 636; - /* Next insn is delay slot */ - pc=0x4499c; - run_44800(); return; - case 0x45740: + /* Next insn is delay slot */ + pc = 0x4a580; + run_4a400(); + return; + case 0x4a92c: + r5 = 6 << 16; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r23 = r5 + -27464; + /* Next insn is delay slot */ + pc = 0x49b9c; + run_49a00(); + return; + case 0x4a940: r2 = r0 + 3; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; r2 = r29 + 176; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; r2 = r29 + 172; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r2; + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r2 = r29 + 156; - r7 = readPages[(r29+252)>>>12][((r29+252)>>>2)&0x3ff]; - r6 = readPages[(r29+248)>>>12][((r29+248)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r30; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - writePages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - r31=0x4577c; - pc=0x57400; - run_57400(); return; - case 0x4577c: + r7 = readPages[(r29 + 252) >>> 12][((r29 + 252) >>> 2) & 0x3ff]; + r6 = readPages[(r29 + 248) >>> 12][((r29 + 248) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff] = r8; + /* Next insn is delay slot */ + r31 = 0x4a97c; + pc = 0x4e600; + run_4e600(); + return; + case 0x4a97c: r16 = r2 + r0; r5 = r30 + r0; - r8 = readPages[(r29+260)>>>12][((r29+260)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x45314; - run_45200(); return; - case 0x45790: + r8 = readPages[(r29 + 260) >>> 12][((r29 + 260) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4a514; + run_4a400(); + return; + case 0x4a990: r18 = r18 + -2; - case 0x45794: + case 0x4a994: r2 = r2 + -1; - writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r2; - addr=r29+164; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x45b34; - run_45a00(); return; + writePages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff] = r2; + addr = r29 + 164; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4ad34; + run_4ac00(); + return; } r3 = r0 + 43; - addr=r29+165; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x457b0: + addr = r29 + 165; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x4a9b0: r3 = r2 < 10 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x459d8; - run_45800(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4abd8; + run_4aa00(); + return; } r2 = r2 + 48; r3 = r0 + 48; - addr=r29+167; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r29+166; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 167; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + addr = r29 + 166; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r29 + 168; r4 = r29 + 164; - case 0x457d4: - r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; + case 0x4a9d4: + r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; r4 = r2 - r4; r3 = r3 + r4; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r4; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; + writePages[(r29 + 236) >>> 12][((r29 + 236) >>> 2) & 0x3ff] = r4; r2 = r3 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45820; - run_45800(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4aa20; + run_4aa00(); + return; } - case 0x457f8: - r3 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; - case 0x45800: - pc=0x45800; + case 0x4a9f8: + r3 = readPages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff]; + case 0x4aa00: + pc = 0x4aa00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_45800() throws ExecutionException { /* 0x45800 - 0x45a00 */ + + private final void run_4aa00() throws ExecutionException { /* 0x4aa00 - 0x4ac00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x45800: + for (;;) { + switch (pc) { + case 0x4aa00: r3 = r3 + 1; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r3; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r3; r2 = r3 + r0; - if(r3 < 0) { - /* Next insn is delay slot */ - pc=0x4583c; + if (r3 < 0) { + /* Next insn is delay slot */ + pc = 0x4aa3c; continue; } - case 0x45814: - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x453f0; - run_45200(); return; - case 0x45820: + case 0x4aa14: + writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4a5f0; + run_4a400(); + return; + case 0x4aa20: r17 = r17 & 1; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x457f8; - run_45600(); return; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x4a9f8; + run_4a800(); + return; } - r2 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x45814; + r2 = readPages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff]; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x4aa14; continue; } - case 0x4583c: + case 0x4aa3c: r2 = r0 + r0; - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x453f0; - run_45200(); return; - case 0x4584c: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4a5f0; + run_4a400(); + return; + case 0x4aa4c: + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 48; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x45870; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x4aa70; continue; } - case 0x4585c: - r2 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; + case 0x4aa5c: + r2 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; r4 = r4 + r2; - /* Next insn is delay slot */ - pc=0x45324; - run_45200(); return; - case 0x45870: + /* Next insn is delay slot */ + pc = 0x4a524; + run_4a400(); + return; + case 0x4aa70: f0 = r0; - f2 = readPages[(r29+252)>>>12][((r29+252)>>>2)&0x3ff]; + f2 = readPages[(r29 + 252) >>> 12][((r29 + 252) >>> 2) & 0x3ff]; f1 = r0; - f3 = readPages[(r29+248)>>>12][((r29+248)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x4585c; + f3 = readPages[(r29 + 248) >>> 12][((r29 + 248) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4aa5c; continue; } r2 = r0 + 1; r2 = r2 - r5; - writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r2; + writePages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff] = r2; r4 = r4 + r2; - /* Next insn is delay slot */ - pc=0x45324; - run_45200(); return; - case 0x458ac: - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r30; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r30; - addr=r29+182; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + /* Next insn is delay slot */ + pc = 0x4a524; + run_4a400(); + return; + case 0x4aaac: + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r30; + addr = r29 + 182; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r20; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r20; r30 = r0 + r0; - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x43b40; - run_43a00(); return; - case 0x458cc: - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x45254; - run_45200(); return; + writePages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x48d40; + run_48c00(); + return; + case 0x4aacc: + if (r30 != r0) { + /* Next insn is delay slot */ + pc = 0x4a454; + run_4a400(); + return; } r30 = r0 + 1; - /* Next insn is delay slot */ - pc=0x45254; - run_45200(); return; - case 0x458e0: - r4 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4a454; + run_4a400(); + return; + case 0x4aae0: + r4 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; r5 = r22 + r0; r6 = r29 + 144; - /* Next insn is delay slot */ - r31=0x458f4; - pc=0x5fe00; - run_5fe00(); return; - case 0x458f4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x43a50; - run_43a00(); return; + /* Next insn is delay slot */ + r31 = 0x4aaf4; + pc = 0x53200; + run_53200(); + return; + case 0x4aaf4: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x48c50; + run_48c00(); + return; } - r18 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - r2 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + r18 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r8 = r21 + r0; - /* Next insn is delay slot */ - pc=0x4519c; - run_45000(); return; - case 0x45914: - r3 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4a39c; + run_4a200(); + return; + case 0x4ab14: + r3 = readPages[(r29 + 224) >>> 12][((r29 + 224) >>> 2) & 0x3ff]; r2 = 32768 << 16; - r4 = readPages[(r29+228)>>>12][((r29+228)>>>2)&0x3ff]; + r4 = readPages[(r29 + 228) >>> 12][((r29 + 228) >>> 2) & 0x3ff]; r2 = r3 ^ r2; r5 = r0 + 45; - writePages[(r29+248)>>>12][((r29+248)>>>2)&0x3ff] = r2; - writePages[(r29+252)>>>12][((r29+252)>>>2)&0x3ff] = r4; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x4527c; - run_45200(); return; - case 0x4593c: + writePages[(r29 + 248) >>> 12][((r29 + 248) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 252) >>> 12][((r29 + 252) >>> 2) & 0x3ff] = r4; + writePages[(r29 + 188) >>> 12][((r29 + 188) >>> 2) & 0x3ff] = r5; + /* Next insn is delay slot */ + pc = 0x4a47c; + run_4a400(); + return; + case 0x4ab3c: r5 = r30 + 1; - /* Next insn is delay slot */ - pc=0x452a4; - run_45200(); return; - case 0x45948: - r3 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; - if(r3 <= 0) { - /* Next insn is delay slot */ - pc=0x45af4; - run_45a00(); return; + /* Next insn is delay slot */ + pc = 0x4a4a4; + run_4a400(); + return; + case 0x4ab48: + r3 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; + if (r3 <= 0) { + /* Next insn is delay slot */ + pc = 0x4acf4; + run_4ac00(); + return; } r2 = r0 + 1; - case 0x4595c: - r3 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; + case 0x4ab5c: + r3 = readPages[(r29 + 212) >>> 12][((r29 + 212) >>> 2) & 0x3ff]; r2 = r2 + r3; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x4599c; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4ab9c; continue; } - case 0x45974: + case 0x4ab74: r18 = r0 + 103; - /* Next insn is delay slot */ - pc=0x453f0; - run_45200(); return; - case 0x45980: - r3 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4a5f0; + run_4a400(); + return; + case 0x4ab80: + r3 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; r3 = r3 + 1; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r3; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r3; r2 = r3 + r0; - if(r3 >= 0) { - /* Next insn is delay slot */ - pc=0x45974; + if (r3 >= 0) { + /* Next insn is delay slot */ + pc = 0x4ab74; continue; } - case 0x4599c: + case 0x4ab9c: r2 = r0 + r0; r18 = r0 + 103; - /* Next insn is delay slot */ - pc=0x453f0; - run_45200(); return; - case 0x459ac: - if(r3 <= 0) { - /* Next insn is delay slot */ - pc=0x45acc; - run_45a00(); return; + /* Next insn is delay slot */ + pc = 0x4a5f0; + run_4a400(); + return; + case 0x4abac: + if (r3 <= 0) { + /* Next insn is delay slot */ + pc = 0x4accc; + run_4ac00(); + return; } - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x45aa8; - run_45a00(); return; + if (r30 != r0) { + /* Next insn is delay slot */ + pc = 0x4aca8; + run_4ac00(); + return; } r17 = r17 & 1; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x45aa8; - run_45a00(); return; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x4aca8; + run_4ac00(); + return; } r2 = r3 + r0; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x453f0; - run_45200(); return; - case 0x459d8: + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4a5f0; + run_4a400(); + return; + case 0x4abd8: r6 = r29 + 163; r3 = r6 + r0; r4 = r0 + 10; - case 0x459e4: - if(r4 != r0) { - /* Next insn is delay slot */ - hi = r2%r4; lo = r2/r4; - pc=0x459f0; + case 0x4abe4: + if (r4 != r0) { + /* Next insn is delay slot */ + hi = r2 % r4; + lo = r2 / r4; + pc = 0x4abf0; continue; } - hi = r2%r4; lo = r2/r4; + hi = r2 % r4; + lo = r2 / r4; throw new ExecutionException("Break"); - case 0x459f0: + case 0x4abf0: r3 = r3 + -1; r5 = hi; r5 = r5 + 48; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x45a00: - pc=0x45a00; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x4ac00: + pc = 0x4ac00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_45a00() throws ExecutionException { /* 0x45a00 - 0x45c00 */ + + private final void run_4ac00() throws ExecutionException { /* 0x4ac00 - 0x4ae00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x45a00: + for (;;) { + switch (pc) { + case 0x4ac00: r2 = lo; r5 = r2 < 10 ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x459e4; - run_45800(); return; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x4abe4; + run_4aa00(); + return; } r2 = r2 + 48; r5 = r2 << 24; r4 = r3 + -1; r5 = r5 >> 24; r2 = ((r4 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x45b70; + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4ad70; continue; } r2 = r29 + 166; - /* Next insn is delay slot */ - pc=0x45a40; + /* Next insn is delay slot */ + pc = 0x4ac40; continue; - case 0x45a3c: - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x4ac3c: + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r5 = tmp; - case 0x45a40: + case 0x4ac40: r2 = r2 + 1; r4 = r4 + 1; - addr=r2+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r4 != r6) { - /* Next insn is delay slot */ - pc=0x45a3c; + addr = r2 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r4 != r6) { + /* Next insn is delay slot */ + pc = 0x4ac3c; continue; } r4 = r29 + 164; r2 = r4 - r3; r3 = r29 + 166; r2 = r3 + r2; - /* Next insn is delay slot */ - pc=0x457d4; - run_45600(); return; - case 0x45a6c: - r2 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x45380; - run_45200(); return; - case 0x45a78: + /* Next insn is delay slot */ + pc = 0x4a9d4; + run_4a800(); + return; + case 0x4ac6c: + r2 = readPages[(r29 + 156) >>> 12][((r29 + 156) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4a580; + run_4a400(); + return; + case 0x4ac78: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x4562c; - run_45600(); return; - case 0x45a84: - r5 = 7 << 16; - r23 = r5 + 636; - /* Next insn is delay slot */ - pc=0x44cf4; - run_44c00(); return; - case 0x45a94: - r4 = 7 << 16; - r3 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r23 = r4 + 636; - /* Next insn is delay slot */ - pc=0x44db4; - run_44c00(); return; - case 0x45aa8: - r3 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4a82c; + run_4a800(); + return; + case 0x4ac84: + r5 = 6 << 16; + r23 = r5 + -27464; + /* Next insn is delay slot */ + pc = 0x49ef4; + run_49e00(); + return; + case 0x4ac94: + r4 = 6 << 16; + r3 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r23 = r4 + -27464; + /* Next insn is delay slot */ + pc = 0x49fb4; + run_49e00(); + return; + case 0x4aca8: + r3 = readPages[(r29 + 208) >>> 12][((r29 + 208) >>> 2) & 0x3ff]; r2 = r30 + 1; r2 = r3 + r2; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r2; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x453f0; - run_45200(); return; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r2; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x4a5f0; + run_4a400(); + return; } - case 0x45ac0: + case 0x4acc0: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x453f0; - run_45200(); return; - case 0x45acc: - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x45b48; + /* Next insn is delay slot */ + pc = 0x4a5f0; + run_4a400(); + return; + case 0x4accc: + if (r30 != r0) { + /* Next insn is delay slot */ + pc = 0x4ad48; continue; } r17 = r17 & 1; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x45b48; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x4ad48; continue; } r3 = r0 + 1; r2 = r0 + 1; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x453f0; - run_45200(); return; - case 0x45af4: + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4a5f0; + run_4a400(); + return; + case 0x4acf4: r2 = r0 + 2; r2 = r2 - r3; - /* Next insn is delay slot */ - pc=0x4595c; - run_45800(); return; - case 0x45b04: - r3 = readPages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff]; - r30 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4ab5c; + run_4aa00(); + return; + case 0x4ad04: + r3 = readPages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff]; + r30 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r2 = r3 + 4; r3 = r4 + r0; - if(r30 >= 0) { - /* Next insn is delay slot */ - pc=0x4451c; - run_44400(); return; + if (r30 >= 0) { + /* Next insn is delay slot */ + pc = 0x4971c; + run_49600(); + return; } - writePages[(r29+316)>>>12][((r29+316)>>>2)&0x3ff] = r2; + writePages[(r29 + 316) >>> 12][((r29 + 316) >>> 2) & 0x3ff] = r2; r30 = r0 + -1; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x4398c; - run_43800(); return; - case 0x45b34: + /* Next insn is delay slot */ + pc = 0x48b8c; + run_48a00(); + return; + case 0x4ad34: r3 = r0 + 45; r2 = r0 - r2; - addr=r29+165; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x457b0; - run_45600(); return; - case 0x45b48: + addr = r29 + 165; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x4a9b0; + run_4a800(); + return; + case 0x4ad48: r30 = r30 + 2; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r30; + writePages[(r29 + 196) >>> 12][((r29 + 196) >>> 2) & 0x3ff] = r30; r2 = r30 + r0; - if(r30 >= 0) { - /* Next insn is delay slot */ - pc=0x453f0; - run_45200(); return; + if (r30 >= 0) { + /* Next insn is delay slot */ + pc = 0x4a5f0; + run_4a400(); + return; } - /* Next insn is delay slot */ - pc=0x45ac0; + /* Next insn is delay slot */ + pc = 0x4acc0; continue; - case 0x45b64: + case 0x4ad64: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x453e4; - run_45200(); return; - case 0x45b70: + /* Next insn is delay slot */ + pc = 0x4a5e4; + run_4a400(); + return; + case 0x4ad70: r2 = r29 + 166; r4 = r29 + 164; - /* Next insn is delay slot */ - pc=0x457d4; - run_45600(); return; - case 0x45b80: - r2 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x45794; - run_45600(); return; - case 0x45b8c: - r3 = readPages[(r29+304)>>>12][((r29+304)>>>2)&0x3ff]; - r2 = r0 + 12; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x43a68; - run_43a00(); return; - case 0x45c00: - pc=0x45c00; + /* Next insn is delay slot */ + pc = 0x4a9d4; + run_4a800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4ad80: + r2 = readPages[(r29 + 176) >>> 12][((r29 + 176) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4a994; + run_4a800(); + return; + case 0x4ad8c: + r3 = readPages[(r29 + 304) >>> 12][((r29 + 304) >>> 2) & 0x3ff]; + r2 = r0 + 12; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + r2 = r0 + -1; + /* Next insn is delay slot */ + pc = 0x48c68; + run_48c00(); + return; + case 0x4ae00: + pc = 0x4ae00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_45c00() throws ExecutionException { /* 0x45c00 - 0x45e00 */ + + private final void run_4ae00() throws ExecutionException { /* 0x4ae00 - 0x4b000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x45c00: + for (;;) { + switch (pc) { + case 0x4ae00: r29 = r29 + -1328; - writePages[(r29+1324)>>>12][((r29+1324)>>>2)&0x3ff] = r31; - writePages[(r29+1312)>>>12][((r29+1312)>>>2)&0x3ff] = r22; - writePages[(r29+1308)>>>12][((r29+1308)>>>2)&0x3ff] = r21; + writePages[(r29 + 1324) >>> 12][((r29 + 1324) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 1312) >>> 12][((r29 + 1312) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 1308) >>> 12][((r29 + 1308) >>> 2) & 0x3ff] = r21; r22 = r5 + r0; r21 = r4 + r0; - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r6; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r7; - writePages[(r29+1320)>>>12][((r29+1320)>>>2)&0x3ff] = r30; - writePages[(r29+1316)>>>12][((r29+1316)>>>2)&0x3ff] = r23; - writePages[(r29+1304)>>>12][((r29+1304)>>>2)&0x3ff] = r20; - writePages[(r29+1300)>>>12][((r29+1300)>>>2)&0x3ff] = r19; - writePages[(r29+1296)>>>12][((r29+1296)>>>2)&0x3ff] = r18; - writePages[(r29+1292)>>>12][((r29+1292)>>>2)&0x3ff] = r17; - writePages[(r29+1288)>>>12][((r29+1288)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x45c44; - pc=0x5ae00; - run_5ae00(); return; - case 0x45c44: - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r6; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 1320) >>> 12][((r29 + 1320) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 1316) >>> 12][((r29 + 1316) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 1304) >>> 12][((r29 + 1304) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 1300) >>> 12][((r29 + 1300) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 1296) >>> 12][((r29 + 1296) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 1292) >>> 12][((r29 + 1292) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 1288) >>> 12][((r29 + 1288) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + r31 = 0x4ae44; + pc = 0x51200; + run_51200(); + return; + case 0x4ae44: + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; r4 = r2 + r0; - writePages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x45c5c; - pc=0x10268; - run_10200(); return; - case 0x45c5c: - writePages[(r29+1256)>>>12][((r29+1256)>>>2)&0x3ff] = r2; - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x45c78; + writePages[(r29 + 1236) >>> 12][((r29 + 1236) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x4ae5c; + pc = 0x10268; + run_10200(); + return; + case 0x4ae5c: + writePages[(r29 + 1256) >>> 12][((r29 + 1256) >>> 2) & 0x3ff] = r2; + if (r21 == r0) { + /* Next insn is delay slot */ + pc = 0x4ae78; continue; } - r2 = readPages[(r21+56)>>>12][((r21+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x45fec; - run_45e00(); return; + r2 = readPages[(r21 + 56) >>> 12][((r21 + 56) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4b1ec; + run_4b000(); + return; } - case 0x45c78: - addr=r22+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x4ae78: + addr = r22 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r3 & 65535; r4 = r2 & 8192; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x45cac; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4aeac; continue; } - r4 = readPages[(r22+100)>>>12][((r22+100)>>>2)&0x3ff]; + r4 = readPages[(r22 + 100) >>> 12][((r22 + 100) >>> 2) & 0x3ff]; r2 = r0 + -8193; r3 = r3 | 8192; r2 = r4 & r2; - writePages[(r22+100)>>>12][((r22+100)>>>2)&0x3ff] = r2; - addr=r22+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + writePages[(r22 + 100) >>> 12][((r22 + 100) >>> 2) & 0x3ff] = r2; + addr = r22 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r3 & 65535; - case 0x45cac: + case 0x4aeac: r4 = r2 & 8; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x45e58; - run_45e00(); return; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4b058; + run_4b000(); + return; } - r4 = readPages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x45e58; - run_45e00(); return; + r4 = readPages[(r22 + 16) >>> 12][((r22 + 16) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4b058; + run_4b000(); + return; } r2 = r2 & 26; r4 = r0 + 10; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x45e88; - run_45e00(); return; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x4b088; + run_4b000(); + return; } - case 0x45cd8: + case 0x4aed8: r3 = r29 + 40; - r2 = 7 << 16; - writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r3; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r0; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r0; - writePages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff] = r0; - writePages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff] = r0; - writePages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff] = r0; - writePages[(r29+1264)>>>12][((r29+1264)>>>2)&0x3ff] = r0; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r0; - writePages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff] = r0; + r2 = 6 << 16; + writePages[(r29 + 1168) >>> 12][((r29 + 1168) >>> 2) & 0x3ff] = r3; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 1248) >>> 12][((r29 + 1248) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 1264) >>> 12][((r29 + 1264) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 1260) >>> 12][((r29 + 1260) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 1220) >>> 12][((r29 + 1220) >>> 2) & 0x3ff] = r0; r8 = r3 + r0; - r19 = r2 + 1040; - case 0x45d0c: - r3 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + r19 = r2 + -27060; + case 0x4af0c: + r3 = readPages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff]; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x464a4; - run_46400(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4b6a4; + run_4b600(); + return; } - case 0x45d24: + case 0x4af24: r3 = r0 + 37; - r16 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x45d44; + r16 = readPages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff]; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x4af44; continue; } - /* Next insn is delay slot */ - pc=0x45db0; + /* Next insn is delay slot */ + pc = 0x4afb0; continue; - case 0x45d3c: - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x45d58; + case 0x4af3c: + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x4af58; continue; } - case 0x45d44: + case 0x4af44: r16 = r16 + 1; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45d3c; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4af3c; continue; } - case 0x45d58: - r3 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; + case 0x4af58: + r3 = readPages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff]; r17 = r16 - r3; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x45db0; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x4afb0; continue; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff]; r2 = r2 + r17; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - r2 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; r2 = r2 + 1; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r2; r2 = r2 < 8 ? 1 : 0; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r17; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x45f80; - run_45e00(); return; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r17; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4b180; + run_4b000(); + return; } r8 = r8 + 8; - case 0x45da0: - r3 = readPages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff]; + case 0x4afa0: + r3 = readPages[(r29 + 1220) >>> 12][((r29 + 1220) >>> 2) & 0x3ff]; r3 = r3 + r17; - writePages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff] = r3; - case 0x45db0: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + writePages[(r29 + 1220) >>> 12][((r29 + 1220) >>> 2) & 0x3ff] = r3; + case 0x4afb0: + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x45fa8; - run_45e00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4b1a8; + run_4b000(); + return; } r16 = r16 + 1; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r5 = r0 + r0; r30 = r0 + -1; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r0; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r0; r17 = r0 + r0; r6 = r0 + 42; r7 = r0 + r0; - case 0x45de0: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x4afe0: + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r3 = r16 + 1; - case 0x45de8: + case 0x4afe8: r2 = r18 + -32; - r4 = (r2&0xffffffffL) < (89&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x46a10; - run_46a00(); return; + r4 = (r2 & 0xffffffffL) < (89 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4bc10; + run_4bc00(); + return; } - r4 = 7 << 16; + r4 = 6 << 16; r2 = r2 << 2; - case 0x45e00: - pc=0x45e00; + case 0x4b000: + pc = 0x4b000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_45e00() throws ExecutionException { /* 0x45e00 - 0x46000 */ + + private final void run_4b000() throws ExecutionException { /* 0x4b000 - 0x4b200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x45e00: - r4 = r4 + 668; + for (;;) { + switch (pc) { + case 0x4b000: + r4 = r4 + -27432; r2 = r4 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; + r2 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r2; return; - case 0x45e18: + case 0x4b018: r17 = r17 | 16; - case 0x45e1c: + case 0x4b01c: r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x45de0; - run_45c00(); return; - case 0x45e28: - r4 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - r7 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4afe0; + run_4ae00(); + return; + case 0x4b028: + r4 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + r7 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; r2 = r4 + 4; - if(r7 >= 0) { - /* Next insn is delay slot */ - pc=0x46a00; - run_46a00(); return; + if (r7 >= 0) { + /* Next insn is delay slot */ + pc = 0x4bc00; + run_4bc00(); + return; } r7 = r0 - r7; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r2; - case 0x45e48: + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r2; + case 0x4b048: r17 = r17 | 4; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x45de0; - run_45c00(); return; - case 0x45e58: + /* Next insn is delay slot */ + pc = 0x4afe0; + run_4ae00(); + return; + case 0x4b058: r4 = r21 + r0; r5 = r22 + r0; - /* Next insn is delay slot */ - r31=0x45e68; - pc=0x48600; - run_48600(); return; - case 0x45e68: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45f48; + /* Next insn is delay slot */ + r31 = 0x4b068; + pc = 0x4d400; + run_4d400(); + return; + case 0x4b068: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b148; continue; } - addr=r22+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + addr = r22 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r4 = r0 + 10; r2 = r3 & 65535; r2 = r2 & 26; - if(r2 != r4) { - /* Next insn is delay slot */ - pc=0x45cd8; - run_45c00(); return; + if (r2 != r4) { + /* Next insn is delay slot */ + pc = 0x4aed8; + run_4ae00(); + return; } - case 0x45e88: - addr=r22+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x4b088: + addr = r22 + 14; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x45cd8; - run_45c00(); return; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4aed8; + run_4ae00(); + return; } - addr=r29+1078; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r22+28)>>>12][((r22+28)>>>2)&0x3ff]; + addr = r29 + 1078; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r22 + 28) >>> 12][((r22 + 28) >>> 2) & 0x3ff]; r4 = r0 + -3; - writePages[(r29+1092)>>>12][((r29+1092)>>>2)&0x3ff] = r2; - r2 = readPages[(r22+36)>>>12][((r22+36)>>>2)&0x3ff]; + writePages[(r29 + 1092) >>> 12][((r29 + 1092) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r22 + 36) >>> 12][((r22 + 36) >>> 2) & 0x3ff]; r3 = r3 & r4; - addr=r29+1076; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+1100)>>>12][((r29+1100)>>>2)&0x3ff] = r2; - r3 = readPages[(r22+100)>>>12][((r22+100)>>>2)&0x3ff]; + addr = r29 + 1076; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 1100) >>> 12][((r29 + 1100) >>> 2) & 0x3ff] = r2; + r3 = readPages[(r22 + 100) >>> 12][((r22 + 100) >>> 2) & 0x3ff]; r2 = r29 + 40; - r6 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; - r7 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - writePages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff] = r2; - writePages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff] = r2; + r6 = readPages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff]; + r7 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + writePages[(r29 + 1064) >>> 12][((r29 + 1064) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1080) >>> 12][((r29 + 1080) >>> 2) & 0x3ff] = r2; r4 = r21 + r0; r2 = r0 + 1024; r5 = r29 + 1064; - writePages[(r29+1164)>>>12][((r29+1164)>>>2)&0x3ff] = r3; - writePages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff] = r2; - writePages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff] = r2; - writePages[(r29+1088)>>>12][((r29+1088)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x45ef4; - pc=0x45c00; - run_45c00(); return; - case 0x45ef4: + writePages[(r29 + 1164) >>> 12][((r29 + 1164) >>> 2) & 0x3ff] = r3; + writePages[(r29 + 1072) >>> 12][((r29 + 1072) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1084) >>> 12][((r29 + 1084) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1088) >>> 12][((r29 + 1088) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + r31 = 0x4b0f4; + pc = 0x4ae00; + run_4ae00(); + return; + case 0x4b0f4: r16 = r2 + r0; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x45f18; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4b118; continue; } r4 = r21 + r0; r5 = r29 + 1064; - /* Next insn is delay slot */ - r31=0x45f10; - pc=0x39800; - run_39800(); return; - case 0x45f10: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x47f78; - run_47e00(); return; + /* Next insn is delay slot */ + r31 = 0x4b110; + pc = 0x40c00; + run_40c00(); + return; + case 0x4b110: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4d178; + run_4d000(); + return; } - case 0x45f18: - addr=r29+1076; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x4b118: + addr = r29 + 1076; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x45f3c; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4b13c; continue; } - addr=r22+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r22 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 | 64; - addr=r22+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x45f3c: + addr = r22 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x4b13c: r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x45f4c; + /* Next insn is delay slot */ + pc = 0x4b14c; continue; - case 0x45f48: + case 0x4b148: r2 = r0 + -1; - case 0x45f4c: - r31 = readPages[(r29+1324)>>>12][((r29+1324)>>>2)&0x3ff]; - r30 = readPages[(r29+1320)>>>12][((r29+1320)>>>2)&0x3ff]; - r23 = readPages[(r29+1316)>>>12][((r29+1316)>>>2)&0x3ff]; - r22 = readPages[(r29+1312)>>>12][((r29+1312)>>>2)&0x3ff]; - r21 = readPages[(r29+1308)>>>12][((r29+1308)>>>2)&0x3ff]; - r20 = readPages[(r29+1304)>>>12][((r29+1304)>>>2)&0x3ff]; - r19 = readPages[(r29+1300)>>>12][((r29+1300)>>>2)&0x3ff]; - r18 = readPages[(r29+1296)>>>12][((r29+1296)>>>2)&0x3ff]; - r17 = readPages[(r29+1292)>>>12][((r29+1292)>>>2)&0x3ff]; - r16 = readPages[(r29+1288)>>>12][((r29+1288)>>>2)&0x3ff]; + case 0x4b14c: + r31 = readPages[(r29 + 1324) >>> 12][((r29 + 1324) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 1320) >>> 12][((r29 + 1320) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 1316) >>> 12][((r29 + 1316) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 1312) >>> 12][((r29 + 1312) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 1308) >>> 12][((r29 + 1308) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 1304) >>> 12][((r29 + 1304) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 1300) >>> 12][((r29 + 1300) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 1296) >>> 12][((r29 + 1296) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 1292) >>> 12][((r29 + 1292) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 1288) >>> 12][((r29 + 1288) >>> 2) & 0x3ff]; r29 = r29 + 1328; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x45f80: + case 0x4b180: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x45f94; - pc=0x63400; - run_63400(); return; - case 0x45f94: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; + /* Next insn is delay slot */ + r31 = 0x4b194; + pc = 0x53a00; + run_53a00(); + return; + case 0x4b194: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; continue; } r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x45da0; - run_45c00(); return; - case 0x45fa8: - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x45fcc; + /* Next insn is delay slot */ + pc = 0x4afa0; + run_4ae00(); + return; + case 0x4b1a8: + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x45fcc; - pc=0x63400; - run_63400(); return; - case 0x45fcc: - addr=r22+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + /* Next insn is delay slot */ + r31 = 0x4b1cc; + pc = 0x53a00; + run_53a00(); + return; + case 0x4b1cc: + addr = r22 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 & 64; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45f48; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b148; continue; } - r2 = readPages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x45f4c; + r2 = readPages[(r29 + 1220) >>> 12][((r29 + 1220) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4b14c; continue; - case 0x45fec: + case 0x4b1ec: r4 = r21 + r0; - /* Next insn is delay slot */ - r31=0x45ff8; - pc=0x3a600; - run_3a600(); return; - case 0x45ff8: - /* Next insn is delay slot */ - pc=0x45c78; - run_45c00(); return; - case 0x46000: - pc=0x46000; + /* Next insn is delay slot */ + r31 = 0x4b1f8; + pc = 0x41400; + run_41400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4b1f8: + /* Next insn is delay slot */ + pc = 0x4ae78; + run_4ae00(); + return; + case 0x4b200: + pc = 0x4b200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_46000() throws ExecutionException { /* 0x46000 - 0x46200 */ + + private final void run_4b200() throws ExecutionException { /* 0x4b200 - 0x4b400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x46000: + for (;;) { + switch (pc) { + case 0x4b200: r5 = r0 + 43; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x45de0; - run_45c00(); return; - case 0x46010: - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - r16 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x4afe0; + run_4ae00(); + return; + case 0x4b210: + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + r16 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r20 = r3 + 4; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x47aa4; - run_47a00(); return; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x4cca4; + run_4cc00(); + return; } r4 = r16 + r0; - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x47984; - run_47800(); return; + if (r30 < 0) { + /* Next insn is delay slot */ + pc = 0x4cb84; + run_4ca00(); + return; } r5 = r0 + r0; r6 = r30 + r0; - writePages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - r31=0x46050; - pc=0x5b400; - run_5b400(); return; - case 0x46050: - r8 = readPages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x47c38; - run_47c00(); return; + writePages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff] = r8; + /* Next insn is delay slot */ + r31 = 0x4b250; + pc = 0x51400; + run_51400(); + return; + case 0x4b250: + r8 = readPages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4ce38; + run_4ce00(); + return; } r2 = r2 - r16; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r2; r2 = r30 < r2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x4787c; - run_47800(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4ca7c; + run_4ca00(); + return; } - case 0x46070: - r2 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x479a0; - run_47800(); return; + case 0x4b270: + r2 = readPages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff]; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4cba0; + run_4ca00(); + return; } - case 0x46080: - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x4b280: + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r2; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r20; + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r20; r30 = r0 + r0; - writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; - case 0x46094: - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x460ac; + writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; + case 0x4b294: + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4b2ac; continue; } - case 0x4609c: - r2 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; + case 0x4b29c: + r2 = readPages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff]; r2 = r2 + 1; - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r2; - case 0x460ac: + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r2; + case 0x4b2ac: r4 = r17 & 2; - writePages[(r29+1224)>>>12][((r29+1224)>>>2)&0x3ff] = r4; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x460cc; + writePages[(r29 + 1224) >>> 12][((r29 + 1224) >>> 2) & 0x3ff] = r4; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4b2cc; continue; } - r5 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; + r5 = readPages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff]; r5 = r5 + 2; - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r5; - case 0x460cc: + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r5; + case 0x4b2cc: r2 = r17 & 132; - writePages[(r29+1228)>>>12][((r29+1228)>>>2)&0x3ff] = r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x46a64; - run_46a00(); return; + writePages[(r29 + 1228) >>> 12][((r29 + 1228) >>> 2) & 0x3ff] = r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4bc64; + run_4bc00(); + return; } - r4 = readPages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff]; - r5 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; + r4 = readPages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff]; r20 = r4 - r5; - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x46a64; - run_46a00(); return; + if (r20 <= 0) { + /* Next insn is delay slot */ + pc = 0x4bc64; + run_4bc00(); + return; } r2 = r20 < 17 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x479ac; - run_47800(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4cbac; + run_4ca00(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - writePages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff] = r19; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + writePages[(r29 + 1244) >>> 12][((r29 + 1244) >>> 2) & 0x3ff] = r19; r23 = r0 + 16; - /* Next insn is delay slot */ - pc=0x4612c; + /* Next insn is delay slot */ + pc = 0x4b32c; continue; - case 0x46118: + case 0x4b318: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; r8 = r8 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x46188; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4b388; continue; } - case 0x4612c: + case 0x4b32c: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r19; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r23; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x46118; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r19; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4b318; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x46164; - pc=0x63400; - run_63400(); return; - case 0x46164: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4b364; + pc = 0x53a00; + run_53a00(); + return; + case 0x4b364: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r8 = r29 + 40; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x4612c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4b32c; continue; } - case 0x46188: + case 0x4b388: r3 = r3 + 1; - r4 = readPages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff]; + r4 = readPages[(r29 + 1244) >>> 12][((r29 + 1244) >>> 2) & 0x3ff]; r2 = r20 + r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x470e4; - run_47000(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r4; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4c2e4; + run_4c200(); + return; } - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r8 = r8 + 8; - case 0x461b8: - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x461f4; + case 0x4b3b8: + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4b3f4; continue; } r3 = r29 + 1206; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; r3 = r0 + 1; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r2 = r2 + 1; r3 = r3 + 1; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x46f60; - run_46e00(); return; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4c160; + run_4c000(); + return; } r8 = r8 + 8; - case 0x461f4: - r3 = readPages[(r29+1224)>>>12][((r29+1224)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x46238; - run_46200(); return; + case 0x4b3f4: + r3 = readPages[(r29 + 1224) >>> 12][((r29 + 1224) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4b438; + run_4b400(); + return; } - case 0x46200: - pc=0x46200; + case 0x4b400: + pc = 0x4b400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_46200() throws ExecutionException { /* 0x46200 - 0x46400 */ + + private final void run_4b400() throws ExecutionException { /* 0x4b400 - 0x4b600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x46200: + for (;;) { + switch (pc) { + case 0x4b400: r3 = r29 + 1204; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; r3 = r0 + 2; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r2 = r2 + 2; r3 = r3 + 1; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x46f34; - run_46e00(); return; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4c134; + run_4c000(); + return; } r8 = r8 + 8; - case 0x46238: - r4 = readPages[(r29+1228)>>>12][((r29+1228)>>>2)&0x3ff]; + case 0x4b438: + r4 = readPages[(r29 + 1228) >>> 12][((r29 + 1228) >>> 2) & 0x3ff]; r3 = r0 + 128; - if(r4 == r3) { - /* Next insn is delay slot */ - pc=0x46dcc; - run_46c00(); return; + if (r4 == r3) { + /* Next insn is delay slot */ + pc = 0x4bfcc; + run_4be00(); + return; } - case 0x46248: - r3 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; + case 0x4b448: + r3 = readPages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff]; r20 = r30 - r3; - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x46318; + if (r20 <= 0) { + /* Next insn is delay slot */ + pc = 0x4b518; continue; } r3 = r20 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x4770c; - run_47600(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4c90c; + run_4c800(); + return; } - r5 = 7 << 16; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r23 = r5 + 1024; + r5 = 6 << 16; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r23 = r5 + -27076; r30 = r0 + 16; - /* Next insn is delay slot */ - pc=0x46294; + /* Next insn is delay slot */ + pc = 0x4b494; continue; - case 0x46280: + case 0x4b480: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; r8 = r8 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x462f0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4b4f0; continue; } - case 0x46294: + case 0x4b494: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r30; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x46280; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4b480; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x462cc; - pc=0x63400; - run_63400(); return; - case 0x462cc: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4b4cc; + pc = 0x53a00; + run_53a00(); + return; + case 0x4b4cc: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r8 = r29 + 40; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x46294; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4b494; continue; } - case 0x462f0: + case 0x4b4f0: r3 = r3 + 1; r2 = r2 + r20; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x46f08; - run_46e00(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4c108; + run_4c000(); + return; } r8 = r8 + 8; - case 0x46318: + case 0x4b518: r3 = r17 & 256; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x46c64; - run_46c00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4be64; + run_4be00(); + return; } - r3 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; + r3 = readPages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; r2 = r2 + r3; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; r3 = r3 + 1; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x46b68; - run_46a00(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4bd68; + run_4bc00(); + return; } - case 0x46350: + case 0x4b550: r8 = r8 + 8; - case 0x46354: + case 0x4b554: r17 = r17 & 4; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x46450; - run_46400(); return; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x4b650; + run_4b600(); + return; } - r3 = readPages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff]; - r4 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; + r3 = readPages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff]; r16 = r3 - r4; - if(r16 <= 0) { - /* Next insn is delay slot */ - pc=0x46450; - run_46400(); return; + if (r16 <= 0) { + /* Next insn is delay slot */ + pc = 0x4b650; + run_4b600(); + return; } r3 = r16 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x47ae8; - run_47a00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4cce8; + run_4cc00(); + return; } - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - writePages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff] = r19; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + writePages[(r29 + 1244) >>> 12][((r29 + 1244) >>> 2) & 0x3ff] = r19; r17 = r0 + 16; - /* Next insn is delay slot */ - pc=0x463ac; + /* Next insn is delay slot */ + pc = 0x4b5ac; continue; - case 0x46398: + case 0x4b598: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; r8 = r8 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x46408; - run_46400(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4b608; + run_4b600(); + return; } - case 0x463ac: + case 0x4b5ac: r3 = r3 + 1; r2 = r2 + 16; r6 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r19; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r17; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x46398; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r19; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x4b598; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x463e4; - pc=0x63400; - run_63400(); return; - case 0x463e4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4b5e4; + pc = 0x53a00; + run_53a00(); + return; + case 0x4b5e4: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r8 = r29 + 40; - case 0x46400: - pc=0x46400; + case 0x4b600: + pc = 0x4b600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_46400() throws ExecutionException { /* 0x46400 - 0x46600 */ + + private final void run_4b600() throws ExecutionException { /* 0x4b600 - 0x4b800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x46400: - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x463ac; - run_46200(); return; + for (;;) { + switch (pc) { + case 0x4b600: + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4b5ac; + run_4b400(); + return; } - case 0x46408: + case 0x4b608: r3 = r3 + 1; - r5 = readPages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff]; + r5 = readPages[(r29 + 1244) >>> 12][((r29 + 1244) >>> 2) & 0x3ff]; r2 = r2 + r16; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r5; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r16; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x46450; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r5; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4b650; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x46444; - pc=0x63400; - run_63400(); return; - case 0x46444: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4b644; + pc = 0x53a00; + run_53a00(); + return; + case 0x4b644: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - case 0x46450: - r3 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; - r5 = readPages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + case 0x4b650: + r3 = readPages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff]; r4 = r3 < r5 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x4646c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4b66c; continue; } r3 = r5 + r0; - case 0x4646c: - r4 = readPages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff]; + case 0x4b66c: + r4 = readPages[(r29 + 1220) >>> 12][((r29 + 1220) >>> 2) & 0x3ff]; r4 = r4 + r3; - writePages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff] = r4; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x46b94; - run_46a00(); return; + writePages[(r29 + 1220) >>> 12][((r29 + 1220) >>> 2) & 0x3ff] = r4; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4bd94; + run_4bc00(); + return; } - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r0; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r0; r8 = r29 + 40; - case 0x4648c: - r3 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x4b68c: + r3 = readPages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff]; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45d24; - run_45c00(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4af24; + run_4ae00(); + return; } - case 0x464a4: - r16 = readPages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x45db0; - run_45c00(); return; - case 0x464b0: - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x45e1c; - run_45e00(); return; + case 0x4b6a4: + r16 = readPages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4afb0; + run_4ae00(); + return; + case 0x4b6b0: + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x4b01c; + run_4b000(); + return; } r5 = r0 + 32; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x45de0; - run_45c00(); return; - case 0x464c8: + /* Next insn is delay slot */ + pc = 0x4afe0; + run_4ae00(); + return; + case 0x4b6c8: r17 = r17 | 1; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x45de0; - run_45c00(); return; - case 0x464d8: - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + /* Next insn is delay slot */ + pc = 0x4afe0; + run_4ae00(); + return; + case 0x4b6d8: + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r4 = r3 + 1; - if(r18 == r6) { - /* Next insn is delay slot */ - pc=0x47efc; - run_47e00(); return; + if (r18 == r6) { + /* Next insn is delay slot */ + pc = 0x4d0fc; + run_4d000(); + return; } r2 = r18 + -48; - r3 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; + r3 = (r2 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; r30 = r0 + r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x4652c; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4b72c; continue; } - case 0x464fc: + case 0x4b6fc: r4 = r4 + 1; r3 = r30 << 1; - addr=r4+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r4 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r30 = r30 << 3; r30 = r3 + r30; r30 = r2 + r30; r2 = r18 + -48; - r3 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x464fc; + r3 = (r2 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4b6fc; continue; } - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x478d8; - run_47800(); return; + if (r30 < 0) { + /* Next insn is delay slot */ + pc = 0x4cad8; + run_4ca00(); + return; } - case 0x4652c: + case 0x4b72c: r3 = r4 + r0; - /* Next insn is delay slot */ - pc=0x45de8; - run_45c00(); return; - case 0x46538: + /* Next insn is delay slot */ + pc = 0x4afe8; + run_4ae00(); + return; + case 0x4b738: r17 = r17 | 16; r2 = r17 & 16; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x4698c; - run_46800(); return; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4bb8c; + run_4ba00(); + return; } - case 0x46550: - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; + case 0x4b750: + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; r4 = r0 + r0; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - case 0x4656c: - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x4657c; + case 0x4b76c: + if (r30 < 0) { + /* Next insn is delay slot */ + pc = 0x4b77c; continue; } r5 = r0 + -129; r17 = r17 & r5; - case 0x4657c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x46bc0; - run_46a00(); return; + case 0x4b77c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4bdc0; + run_4bc00(); + return; } - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x46bc0; - run_46a00(); return; + if (r30 != r0) { + /* Next insn is delay slot */ + pc = 0x4bdc0; + run_4bc00(); + return; } - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x46fb4; - run_46e00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4c1b4; + run_4c000(); + return; } r2 = r17 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x46fb4; - run_46e00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4c1b4; + run_4c000(); + return; } r2 = r0 + 48; - addr=r29+1103; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 1103; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 + 1; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r2; r16 = r29 + 1103; - case 0x465b4: - r2 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; + case 0x4b7b4: + r2 = readPages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff]; r4 = r2 < r30 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x465cc; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4b7cc; continue; } r2 = r30 + r0; - case 0x465cc: - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r2; - writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x46094; - run_46000(); return; - case 0x465dc: + case 0x4b7cc: + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4b294; + run_4b200(); + return; + case 0x4b7dc: r17 = r17 | 16; r2 = r17 & 16; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x469d0; - run_46800(); return; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4bbd0; + run_4ba00(); + return; } - case 0x465f4: - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; + case 0x4b7f4: + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; r4 = r0 + 1; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - case 0x46600: - pc=0x46600; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + case 0x4b800: + pc = 0x4b800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_46600() throws ExecutionException { /* 0x46600 - 0x46800 */ + + private final void run_4b800() throws ExecutionException { /* 0x4b800 - 0x4ba00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x46600: + for (;;) { + switch (pc) { + case 0x4b800: r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x4656c; - run_46400(); return; - case 0x46618: + /* Next insn is delay slot */ + pc = 0x4b76c; + run_4b600(); + return; + case 0x4b818: r7 = r0 + r0; r2 = r18 + -48; - case 0x46620: + case 0x4b820: r3 = r3 + 1; r4 = r7 << 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r18 = tmp; r7 = r7 << 3; r7 = r4 + r7; r7 = r7 + r2; r2 = r18 + -48; - r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x46620; + r4 = (r2 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4b820; continue; } - /* Next insn is delay slot */ - pc=0x45de8; - run_45c00(); return; - case 0x46650: + /* Next insn is delay slot */ + pc = 0x4afe8; + run_4ae00(); + return; + case 0x4b850: r2 = r17 & 16; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x468bc; - run_46800(); return; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4babc; + run_4ba00(); + return; } - case 0x46668: - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + case 0x4b868: + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - case 0x4667c: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x47434; - run_47400(); return; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + case 0x4b87c: + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4c634; + run_4c600(); + return; } - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r4 = r0 + 1; - /* Next insn is delay slot */ - pc=0x4656c; - run_46400(); return; - case 0x46694: + /* Next insn is delay slot */ + pc = 0x4b76c; + run_4b600(); + return; + case 0x4b894: r17 = r17 | 64; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x45de0; - run_45c00(); return; - case 0x466a4: + /* Next insn is delay slot */ + pc = 0x4afe0; + run_4ae00(); + return; + case 0x4b8a4: r17 = r17 | 128; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x45de0; - run_45c00(); return; - case 0x466b4: - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4afe0; + run_4ae00(); + return; + case 0x4b8b4: + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r0 + 48; - addr=r29+1204; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 1204; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + 120; - addr=r29+1205; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; + addr = r29 + 1205; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; r17 = r17 | 2; r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - r3 = 7 << 16; - r3 = r3 + 248; - writePages[(r29+1264)>>>12][((r29+1264)>>>2)&0x3ff] = r3; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + r3 = 6 << 16; + r3 = r3 + -27848; + writePages[(r29 + 1264) >>> 12][((r29 + 1264) >>> 2) & 0x3ff] = r3; r4 = r0 + 2; r18 = r0 + 120; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x4656c; - run_46400(); return; - case 0x46708: + /* Next insn is delay slot */ + pc = 0x4b76c; + run_4b600(); + return; + case 0x4b908: r2 = r17 & 8; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x47668; - run_47600(); return; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4c868; + run_4c800(); + return; } - r4 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; + r4 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; r3 = r4 + 7; - case 0x4672c: + case 0x4b92c: r2 = r0 + -8; r2 = r3 & r2; r3 = r2 + 8; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff] = r8; - writePages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff] = f0; - f12 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; - writePages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff] = f1; - f13 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x46764; - pc=0x37a00; - run_37a00(); return; - case 0x46764: + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + f0 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + f1 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + writePages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff] = r8; + writePages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff] = f0; + f12 = readPages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff]; + writePages[(r29 + 1248) >>> 12][((r29 + 1248) >>> 2) & 0x3ff] = f1; + f13 = readPages[(r29 + 1248) >>> 12][((r29 + 1248) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x4b964; + pc = 0x3ee00; + run_3ee00(); + return; + case 0x4b964: r3 = r0 + 1; - r8 = readPages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff]; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x47450; - run_47400(); return; + r8 = readPages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff]; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x4c650; + run_4c600(); + return; } f0 = r0; - f2 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; + f2 = readPages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff]; f1 = r0; - f3 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x47b44; - run_47a00(); return; + f3 = readPages[(r29 + 1248) >>> 12][((r29 + 1248) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) < (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4cd44; + run_4cc00(); + return; } - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - case 0x4679c: + case 0x4b99c: r2 = r18 < 72 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x478c8; - run_47800(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4cac8; + run_4ca00(); + return; } - r16 = 7 << 16; - r16 = r16 + 212; - case 0x467b0: + r16 = 6 << 16; + r16 = r16 + -27884; + case 0x4b9b0: r2 = r0 + -129; r17 = r17 & r2; r4 = r0 + 3; r2 = r0 + 3; - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r2; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r4; + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r4; r30 = r0 + r0; - writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x46094; - run_46000(); return; - case 0x467d8: + writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4b294; + run_4b200(); + return; + case 0x4b9d8: r17 = r17 | 8; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x45de0; - run_45c00(); return; - case 0x467e8: - r2 = 7 << 16; - r2 = r2 + 228; - writePages[(r29+1264)>>>12][((r29+1264)>>>2)&0x3ff] = r2; - r2 = r17 & 16; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - case 0x46800: - pc=0x46800; + /* Next insn is delay slot */ + pc = 0x4afe0; + run_4ae00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4b9e8: + r2 = 6 << 16; + r2 = r2 + -27868; + writePages[(r29 + 1264) >>> 12][((r29 + 1264) >>> 2) & 0x3ff] = r2; + r2 = r17 & 16; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + case 0x4ba00: + pc = 0x4ba00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_46800() throws ExecutionException { /* 0x46800 - 0x46a00 */ + + private final void run_4ba00() throws ExecutionException { /* 0x4ba00 - 0x4bc00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x46800: - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x46904; + for (;;) { + switch (pc) { + case 0x4ba00: + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4bb04; continue; } - case 0x4680c: - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + case 0x4ba0c: + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - case 0x46820: + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + case 0x4ba20: r3 = r17 & 1; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x46fc4; - run_46e00(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4c1c4; + run_4c000(); + return; } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x46fc4; - run_46e00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4c1c4; + run_4c000(); + return; } r3 = r0 + 48; - addr=r29+1204; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r29+1205; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 1204; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + addr = r29 + 1205; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r17 = r17 | 2; r4 = r0 + 2; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x4656c; - run_46400(); return; - case 0x46858: - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4b76c; + run_4b600(); + return; + case 0x4ba58: + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - addr=r29+1064; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - case 0x46878: + addr = r29 + 1064; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + case 0x4ba78: r4 = r0 + 1; r5 = r0 + 1; r3 = r0 + r0; - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r4; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r5; + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r4; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r5; r30 = r0 + r0; - writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; + writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; r16 = r29 + 1064; - /* Next insn is delay slot */ - pc=0x460ac; - run_46000(); return; - case 0x468a0: + /* Next insn is delay slot */ + pc = 0x4b2ac; + run_4b200(); + return; + case 0x4baa0: r17 = r17 | 16; r2 = r17 & 16; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x46668; - run_46600(); return; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b868; + run_4b800(); + return; } - case 0x468bc: + case 0x4babc: r2 = r17 & 64; - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x4769c; - run_47600(); return; + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4c89c; + run_4c800(); + return; } - addr=r3+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + addr = r3 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x4667c; - run_46600(); return; - case 0x468e0: - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - r3 = 7 << 16; - r3 = r3 + 248; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4b87c; + run_4b800(); + return; + case 0x4bae0: + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + r3 = 6 << 16; + r3 = r3 + -27848; r2 = r17 & 16; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+1264)>>>12][((r29+1264)>>>2)&0x3ff] = r3; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x4680c; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 1264) >>> 12][((r29 + 1264) >>> 2) & 0x3ff] = r3; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4ba0c; continue; } - case 0x46904: + case 0x4bb04: r2 = r17 & 64; - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x47654; - run_47600(); return; + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4c854; + run_4c800(); + return; } - addr=r3+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r3 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x46820; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4ba20; continue; - case 0x46928: + case 0x4bb28: r2 = r17 & 16; - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x46a34; - run_46a00(); return; + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4bc34; + run_4bc00(); + return; } r17 = r17 & 64; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x46a34; - run_46a00(); return; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x4bc34; + run_4bc00(); + return; } - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = readPages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1220) >>> 12][((r29 + 1220) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x45d0c; - run_45c00(); return; - case 0x46978: - r2 = r17 & 16; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x46550; - run_46400(); return; - } - case 0x4698c: - r2 = r17 & 64; - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x4767c; - run_47600(); return; - } - addr=r3+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - r4 = r0 + r0; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x4656c; - run_46400(); return; - case 0x469bc: - r2 = r17 & 16; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x465f4; - run_46400(); return; - } - case 0x469d0: - r2 = r17 & 64; - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x476b0; - run_47600(); return; - } - addr=r3+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - r4 = r0 + 1; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x4656c; - run_46400(); return; - case 0x46a00: - pc=0x46a00; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4af0c; + run_4ae00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4bb78: + r2 = r17 & 16; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b750; + run_4b600(); + return; + } + case 0x4bb8c: + r2 = r17 & 64; + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4c87c; + run_4c800(); + return; + } + addr = r3 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + r2 = tmp; + r3 = r3 + 4; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + r4 = r0 + r0; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r3 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x4b76c; + run_4b600(); + return; + case 0x4bbbc: + r2 = r17 & 16; + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b7f4; + run_4b600(); + return; + } + case 0x4bbd0: + r2 = r17 & 64; + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4c8b0; + run_4c800(); + return; + } + addr = r3 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + r2 = tmp; + r3 = r3 + 4; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + r4 = r0 + 1; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r3 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x4b76c; + run_4b600(); + return; + case 0x4bc00: + pc = 0x4bc00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_46a00() throws ExecutionException { /* 0x46a00 - 0x46c00 */ + + private final void run_4bc00() throws ExecutionException { /* 0x4bc00 - 0x4be00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x46a00: - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r2; + for (;;) { + switch (pc) { + case 0x4bc00: + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r2; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x45de0; - run_45c00(); return; - case 0x46a10: - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r7; - writePages[(r29+1336)>>>12][((r29+1336)>>>2)&0x3ff] = r3; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x45fa8; - run_45e00(); return; + /* Next insn is delay slot */ + pc = 0x4afe0; + run_4ae00(); + return; + case 0x4bc10: + writePages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 1336) >>> 12][((r29 + 1336) >>> 2) & 0x3ff] = r3; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r18 == r0) { + /* Next insn is delay slot */ + pc = 0x4b1a8; + run_4b000(); + return; } - addr=r29+1064; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x46878; - run_46800(); return; - case 0x46a34: - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = readPages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; + addr = r29 + 1064; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x4ba78; + run_4ba00(); + return; + case 0x4bc34: + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1220) >>> 12][((r29 + 1220) >>> 2) & 0x3ff]; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x45d0c; - run_45c00(); return; - case 0x46a64: - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x461b8; - run_46000(); return; - case 0x46a70: - r4 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4af0c; + run_4ae00(); + return; + case 0x4bc64: + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4b3b8; + run_4b200(); + return; + case 0x4bc70: + r4 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; r3 = r0 + 1; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; r2 = r2 + 1; r3 = r4 < 2 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x46eb0; - run_46e00(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4c0b0; + run_4c000(); + return; } - case 0x46a94: - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + case 0x4bc94: + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x4738c; - run_47200(); return; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4c58c; + run_4c400(); + return; } r8 = r8 + 8; - case 0x46ab4: - r4 = readPages[(r29+1256)>>>12][((r29+1256)>>>2)&0x3ff]; + case 0x4bcb4: + r4 = readPages[(r29 + 1256) >>> 12][((r29 + 1256) >>> 2) & 0x3ff]; r3 = r3 + 1; - r5 = readPages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff]; + r5 = readPages[(r29 + 1236) >>> 12][((r29 + 1236) >>> 2) & 0x3ff]; r2 = r2 + r4; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r5; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x473bc; - run_47200(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4c5bc; + run_4c400(); + return; } r8 = r8 + 8; - case 0x46ae4: + case 0x4bce4: f0 = r0; - f2 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; + f2 = readPages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff]; f1 = r0; - f3 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x47114; - run_47000(); return; + f3 = readPages[(r29 + 1248) >>> 12][((r29 + 1248) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4c314; + run_4c200(); + return; } - r5 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; + r5 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; r16 = r16 + 1; r4 = r5 + -1; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; r2 = r2 + r4; - case 0x46b20: + case 0x4bd20: r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x46ed8; - run_46e00(); return; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4c0d8; + run_4c000(); + return; } - case 0x46b38: + case 0x4bd38: r8 = r8 + 8; - case 0x46b3c: - r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; + case 0x4bd3c: + r5 = readPages[(r29 + 1260) >>> 12][((r29 + 1260) >>> 2) & 0x3ff]; r4 = r29 + 1188; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r5; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r4; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r5; r2 = r5 + r2; - case 0x46b50: + case 0x4bd50: r3 = r3 + 1; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x46350; - run_46200(); return; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4b550; + run_4b400(); + return; } - case 0x46b68: + case 0x4bd68: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x46b7c; - pc=0x63400; - run_63400(); return; - case 0x46b7c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4bd7c; + pc = 0x53a00; + run_53a00(); + return; + case 0x4bd7c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x46354; - run_46200(); return; - case 0x46b94: + /* Next insn is delay slot */ + pc = 0x4b554; + run_4b400(); + return; + case 0x4bd94: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x46ba8; - pc=0x63400; - run_63400(); return; - case 0x46ba8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4bda8; + pc = 0x53a00; + run_53a00(); + return; + case 0x4bda8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r0; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r0; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x4648c; - run_46400(); return; - case 0x46bc0: + /* Next insn is delay slot */ + pc = 0x4b68c; + run_4b600(); + return; + case 0x4bdc0: r5 = r0 + 1; - if(r4 == r5) { - /* Next insn is delay slot */ - pc=0x46f8c; - run_46e00(); return; + if (r4 == r5) { + /* Next insn is delay slot */ + pc = 0x4c18c; + run_4c000(); + return; } r6 = r29 + 1104; r5 = r0 + 2; r16 = r6 + r0; - if(r4 != r5) { - /* Next insn is delay slot */ - pc=0x46c14; - run_46c00(); return; + if (r4 != r5) { + /* Next insn is delay slot */ + pc = 0x4be14; + run_4be00(); + return; } - r5 = readPages[(r29+1264)>>>12][((r29+1264)>>>2)&0x3ff]; - case 0x46be4: + r5 = readPages[(r29 + 1264) >>> 12][((r29 + 1264) >>> 2) & 0x3ff]; + case 0x4bde4: r4 = r2 & 15; r4 = r5 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r4 = tmp; r16 = r16 + -1; r2 = r2 >>> 4; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x46be4; + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4bde4; continue; } - case 0x46c00: - pc=0x46c00; + case 0x4be00: + pc = 0x4be00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_46c00() throws ExecutionException { /* 0x46c00 - 0x46e00 */ + + private final void run_4be00() throws ExecutionException { /* 0x4be00 - 0x4c000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x46c00: - case 0x46c04: + for (;;) { + switch (pc) { + case 0x4be00: + case 0x4be04: r6 = r6 - r16; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x465b4; - run_46400(); return; - case 0x46c14: + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + pc = 0x4b7b4; + run_4b600(); + return; + case 0x4be14: r4 = r2 & 7; r16 = r16 + -1; r4 = r4 + 48; r2 = r2 >>> 3; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x46c14; + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4be14; continue; } r2 = r17 & 1; r5 = r16 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x46c04; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4be04; continue; } r2 = r0 + 48; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x46c04; + if (r4 == r2) { + /* Next insn is delay slot */ + pc = 0x4be04; continue; } r16 = r16 + -1; r6 = r6 - r16; - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x465b4; - run_46400(); return; - case 0x46c64: + addr = r5 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + pc = 0x4b7b4; + run_4b600(); + return; + case 0x4be64: r18 = r18 < 102 ? 1 : 0; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x46a70; - run_46a00(); return; + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x4bc70; + run_4bc00(); + return; } f0 = r0; - f2 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; + f2 = readPages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff]; f1 = r0; - f3 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x46fd8; - run_46e00(); return; + f3 = readPages[(r29 + 1248) >>> 12][((r29 + 1248) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x4c1d8; + run_4c000(); + return; } - r3 = 7 << 16; - r3 = r3 + 276; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; + r3 = 5 << 16; + r3 = r3 + 30860; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; r3 = r0 + 1; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r2 = r2 + 1; r3 = r3 + 1; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x47720; - run_47600(); return; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4c920; + run_4c800(); + return; } r8 = r8 + 8; - case 0x46ccc: - r3 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; - r4 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; + case 0x4becc: + r3 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; r3 = r3 < r4 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x46cf0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4bef0; continue; } r3 = r17 & 1; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x46354; - run_46200(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4b554; + run_4b400(); + return; } - case 0x46cf0: - r3 = readPages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1256)>>>12][((r29+1256)>>>2)&0x3ff]; + case 0x4bef0: + r3 = readPages[(r29 + 1236) >>> 12][((r29 + 1236) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1256) >>> 12][((r29 + 1256) >>> 2) & 0x3ff]; r2 = r2 + r3; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; r3 = r3 + 1; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x47918; - run_47800(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4cb18; + run_4ca00(); + return; } r8 = r8 + 8; - case 0x46d2c: - r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; + case 0x4bf2c: + r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; r16 = r3 + -1; - if(r16 <= 0) { - /* Next insn is delay slot */ - pc=0x46354; - run_46200(); return; + if (r16 <= 0) { + /* Next insn is delay slot */ + pc = 0x4b554; + run_4b400(); + return; } r3 = r16 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x471b0; - run_47000(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4c3b0; + run_4c200(); + return; } - r5 = 7 << 16; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r23 = r5 + 1024; + r5 = 6 << 16; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r23 = r5 + -27076; r18 = r0 + 16; - /* Next insn is delay slot */ - pc=0x46d78; + /* Next insn is delay slot */ + pc = 0x4bf78; continue; - case 0x46d64: + case 0x4bf64: r8 = r8 + 8; - case 0x46d68: + case 0x4bf68: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x471bc; - run_47000(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4c3bc; + run_4c200(); + return; } - case 0x46d78: + case 0x4bf78: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x46d64; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4bf64; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x46db0; - pc=0x63400; - run_63400(); return; - case 0x46db0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4bfb0; + pc = 0x53a00; + run_53a00(); + return; + case 0x4bfb0: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x46d68; + /* Next insn is delay slot */ + pc = 0x4bf68; continue; - case 0x46dcc: - r3 = readPages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff]; - r4 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; + case 0x4bfcc: + r3 = readPages[(r29 + 1208) >>> 12][((r29 + 1208) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff]; r20 = r3 - r4; - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x46248; - run_46200(); return; + if (r20 <= 0) { + /* Next insn is delay slot */ + pc = 0x4b448; + run_4b400(); + return; } r3 = r20 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x47bb8; - run_47a00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4cdb8; + run_4cc00(); + return; } - r4 = 7 << 16; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r23 = r4 + 1024; + r4 = 6 << 16; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r23 = r4 + -27076; r7 = r0 + 16; - case 0x46e00: - pc=0x46e00; + case 0x4c000: + pc = 0x4c000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_46e00() throws ExecutionException { /* 0x46e00 - 0x47000 */ + + private final void run_4c000() throws ExecutionException { /* 0x4c000 - 0x4c200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x46e00: - /* Next insn is delay slot */ - pc=0x46e1c; + for (;;) { + switch (pc) { + case 0x4c000: + /* Next insn is delay slot */ + pc = 0x4c01c; continue; - case 0x46e08: + case 0x4c008: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; r8 = r8 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x46e80; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4c080; continue; } - case 0x46e1c: + case 0x4c01c: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r7; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x46e08; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4c008; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - writePages[(r29+1280)>>>12][((r29+1280)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x46e58; - pc=0x63400; - run_63400(); return; - case 0x46e58: - r7 = readPages[(r29+1280)>>>12][((r29+1280)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + writePages[(r29 + 1280) >>> 12][((r29 + 1280) >>> 2) & 0x3ff] = r7; + /* Next insn is delay slot */ + r31 = 0x4c058; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c058: + r7 = readPages[(r29 + 1280) >>> 12][((r29 + 1280) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r8 = r29 + 40; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x46e1c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4c01c; continue; } - case 0x46e80: + case 0x4c080: r3 = r3 + 1; r2 = r2 + r20; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x47408; - run_47400(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4c608; + run_4c600(); + return; } r8 = r8 + 8; - /* Next insn is delay slot */ - pc=0x46248; - run_46200(); return; - case 0x46eb0: + /* Next insn is delay slot */ + pc = 0x4b448; + run_4b400(); + return; + case 0x4c0b0: r3 = r17 & 1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x46a94; - run_46a00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4bc94; + run_4bc00(); + return; } - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x46b38; - run_46a00(); return; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4bd38; + run_4bc00(); + return; } - case 0x46ed8: + case 0x4c0d8: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x46eec; - pc=0x63400; - run_63400(); return; - case 0x46eec: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4c0ec; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c0ec: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x46b3c; - run_46a00(); return; - case 0x46f08: + /* Next insn is delay slot */ + pc = 0x4bd3c; + run_4bc00(); + return; + case 0x4c108: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x46f1c; - pc=0x63400; - run_63400(); return; - case 0x46f1c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4c11c; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c11c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x46318; - run_46200(); return; - case 0x46f34: + /* Next insn is delay slot */ + pc = 0x4b518; + run_4b400(); + return; + case 0x4c134: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x46f48; - pc=0x63400; - run_63400(); return; - case 0x46f48: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4c148; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c148: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x46238; - run_46200(); return; - case 0x46f60: + /* Next insn is delay slot */ + pc = 0x4b438; + run_4b400(); + return; + case 0x4c160: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x46f74; - pc=0x63400; - run_63400(); return; - case 0x46f74: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4c174; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c174: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x461f4; - run_46000(); return; - case 0x46f8c: - r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x471d0; - run_47000(); return; + /* Next insn is delay slot */ + pc = 0x4b3f4; + run_4b200(); + return; + case 0x4c18c: + r4 = (r2 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4c3d0; + run_4c200(); + return; } r2 = r2 + 48; r4 = r0 + 1; - addr=r29+1103; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r4; + addr = r29 + 1103; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r4; r16 = r29 + 1103; - /* Next insn is delay slot */ - pc=0x465b4; - run_46400(); return; - case 0x46fb4: - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4b7b4; + run_4b600(); + return; + case 0x4c1b4: + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r0; r16 = r29 + 1104; - /* Next insn is delay slot */ - pc=0x465b4; - run_46400(); return; - case 0x46fc4: + /* Next insn is delay slot */ + pc = 0x4b7b4; + run_4b600(); + return; + case 0x4c1c4: r4 = r0 + 2; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x4656c; - run_46400(); return; - case 0x46fd8: - r3 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; - if(r3 <= 0) { - /* Next insn is delay slot */ - pc=0x4774c; - run_47600(); return; + /* Next insn is delay slot */ + pc = 0x4b76c; + run_4b600(); + return; + case 0x4c1d8: + r3 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; + if (r3 <= 0) { + /* Next insn is delay slot */ + pc = 0x4c94c; + run_4c800(); + return; } - r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; - r4 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; + r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; r18 = r16 + r3; r20 = r18 - r16; r3 = r4 < r20 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x47008; - run_47000(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4c208; + run_4c200(); + return; } - case 0x47000: - pc=0x47000; + case 0x4c200: + pc = 0x4c200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_47000() throws ExecutionException { /* 0x47000 - 0x47200 */ + + private final void run_4c200() throws ExecutionException { /* 0x4c200 - 0x4c400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x47000: + for (;;) { + switch (pc) { + case 0x4c200: r20 = r4 + r0; - case 0x47008: - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x4703c; + case 0x4c208: + if (r20 <= 0) { + /* Next insn is delay slot */ + pc = 0x4c23c; continue; } - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r2 = r2 + r20; r3 = r3 + 1; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x479cc; - run_47800(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4cbcc; + run_4ca00(); + return; } r8 = r8 + 8; - case 0x4703c: - if(r20 < 0) { - /* Next insn is delay slot */ - pc=0x479c0; - run_47800(); return; + case 0x4c23c: + if (r20 < 0) { + /* Next insn is delay slot */ + pc = 0x4cbc0; + run_4ca00(); + return; } - case 0x47044: - r3 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; + case 0x4c244: + r3 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; r20 = r3 - r20; - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x47238; - run_47200(); return; + if (r20 <= 0) { + /* Next insn is delay slot */ + pc = 0x4c438; + run_4c400(); + return; } r3 = r20 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x476d0; - run_47600(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4c8d0; + run_4c800(); + return; } - r5 = 7 << 16; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r23 = r5 + 1024; + r5 = 6 << 16; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r23 = r5 + -27076; r30 = r0 + 16; - /* Next insn is delay slot */ - pc=0x47090; + /* Next insn is delay slot */ + pc = 0x4c290; continue; - case 0x4707c: + case 0x4c27c: r8 = r8 + 8; - case 0x47080: + case 0x4c280: r20 = r20 + -16; r4 = r20 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x476dc; - run_47600(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4c8dc; + run_4c800(); + return; } - case 0x47090: + case 0x4c290: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r30; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x4707c; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4c27c; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x470c8; - pc=0x63400; - run_63400(); return; - case 0x470c8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4c2c8; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c2c8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x47080; + /* Next insn is delay slot */ + pc = 0x4c280; continue; - case 0x470e4: + case 0x4c2e4: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x470f8; - pc=0x63400; - run_63400(); return; - case 0x470f8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4c2f8; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c2f8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x461b8; - run_46000(); return; - case 0x47114: - r4 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4b3b8; + run_4b200(); + return; + case 0x4c314: + r4 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; r16 = r4 + -1; - if(r16 <= 0) { - /* Next insn is delay slot */ - pc=0x46b3c; - run_46a00(); return; + if (r16 <= 0) { + /* Next insn is delay slot */ + pc = 0x4bd3c; + run_4bc00(); + return; } r4 = r16 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x473ec; - run_47200(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4c5ec; + run_4c400(); + return; } - r4 = 7 << 16; - r23 = r4 + 1024; + r4 = 6 << 16; + r23 = r4 + -27076; r18 = r0 + 16; - /* Next insn is delay slot */ - pc=0x4715c; + /* Next insn is delay slot */ + pc = 0x4c35c; continue; - case 0x47148: + case 0x4c348: r8 = r8 + 8; - case 0x4714c: + case 0x4c34c: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x473f4; - run_47200(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4c5f4; + run_4c400(); + return; } - case 0x4715c: + case 0x4c35c: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x47148; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4c348; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x47194; - pc=0x63400; - run_63400(); return; - case 0x47194: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4c394; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c394: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x4714c; + /* Next insn is delay slot */ + pc = 0x4c34c; continue; - case 0x471b0: - r4 = 7 << 16; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r23 = r4 + 1024; - case 0x471bc: - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r16; + case 0x4c3b0: + r4 = 6 << 16; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r23 = r4 + -27076; + case 0x4c3bc: + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r16; r2 = r2 + r16; - /* Next insn is delay slot */ - pc=0x46b50; - run_46a00(); return; - case 0x471d0: + /* Next insn is delay slot */ + pc = 0x4bd50; + run_4bc00(); + return; + case 0x4c3d0: r6 = r29 + 1104; r16 = r6 + r0; r4 = r0 + 10; - case 0x471dc: - if(r4 != r0) { - /* Next insn is delay slot */ - if(r4!=0) { - hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); + case 0x4c3dc: + if (r4 != r0) { + /* Next insn is delay slot */ + if (r4 != 0) { + hi = (int) ((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); + lo = (int) ((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } - pc=0x471e8; + pc = 0x4c3e8; continue; } - if(r4!=0) { - hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); + if (r4 != 0) { + hi = (int) ((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); + lo = (int) ((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); } throw new ExecutionException("Break"); - case 0x471e8: + case 0x4c3e8: r16 = r16 + -1; r5 = hi; r5 = r5 + 48; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = lo; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x471dc; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4c3dc; continue; } - case 0x47200: - pc=0x47200; + case 0x4c400: + pc = 0x4c400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_47200() throws ExecutionException { /* 0x47200 - 0x47400 */ + + private final void run_4c400() throws ExecutionException { /* 0x4c400 - 0x4c600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x47200: + for (;;) { + switch (pc) { + case 0x4c400: r6 = r6 - r16; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x465b4; - run_46400(); return; - case 0x47214: + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + pc = 0x4b7b4; + run_4b600(); + return; + case 0x4c414: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x47228; - pc=0x63400; - run_63400(); return; - case 0x47228: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4c428; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c428: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; r8 = r29 + 40; - case 0x47238: - r3 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; - r5 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; + case 0x4c438: + r3 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; r16 = r16 + r3; - r3 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; + r3 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; r4 = r3 < r5 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x47264; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4c464; continue; } r4 = r17 & 1; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x47298; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4c498; continue; } - case 0x47264: - r4 = readPages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff]; - r5 = readPages[(r29+1256)>>>12][((r29+1256)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; - r4 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + case 0x4c464: + r4 = readPages[(r29 + 1236) >>> 12][((r29 + 1236) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 1256) >>> 12][((r29 + 1256) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r4; + r4 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r2 = r2 + r5; r4 = r4 + 1; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r4; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r5; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x479f8; - run_47800(); return; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4cbf8; + run_4ca00(); + return; } r8 = r8 + 8; - case 0x47298: - r4 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; + case 0x4c498: + r4 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; r18 = r18 - r16; r3 = r4 - r3; r4 = r18 < r3 ? 1 : 0; r20 = r3 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x472b8; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4c4b8; continue; } r20 = r18 + r0; - case 0x472b8: - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x472ec; + case 0x4c4b8: + if (r20 <= 0) { + /* Next insn is delay slot */ + pc = 0x4c4ec; continue; } - r4 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r4 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r2 = r2 + r20; r4 = r4 + 1; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r4; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x47a6c; - run_47a00(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4cc6c; + run_4cc00(); + return; } r8 = r8 + 8; - case 0x472ec: - if(r20 < 0) { - /* Next insn is delay slot */ - pc=0x47a60; - run_47a00(); return; + case 0x4c4ec: + if (r20 < 0) { + /* Next insn is delay slot */ + pc = 0x4cc60; + run_4cc00(); + return; } - case 0x472f4: + case 0x4c4f4: r16 = r3 - r20; - if(r16 <= 0) { - /* Next insn is delay slot */ - pc=0x46354; - run_46200(); return; + if (r16 <= 0) { + /* Next insn is delay slot */ + pc = 0x4b554; + run_4b400(); + return; } r3 = r16 < 17 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x471b0; - run_47000(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4c3b0; + run_4c200(); + return; } - r5 = 7 << 16; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r23 = r5 + 1024; + r5 = 6 << 16; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r23 = r5 + -27076; r18 = r0 + 16; - /* Next insn is delay slot */ - pc=0x47338; + /* Next insn is delay slot */ + pc = 0x4c538; continue; - case 0x47324: + case 0x4c524: r8 = r8 + 8; - case 0x47328: + case 0x4c528: r16 = r16 + -16; r4 = r16 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x471bc; - run_47000(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4c3bc; + run_4c200(); + return; } - case 0x47338: + case 0x4c538: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x47324; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4c524; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x47370; - pc=0x63400; - run_63400(); return; - case 0x47370: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; - } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x47328; - continue; - case 0x4738c: - r4 = r21 + r0; - r5 = r22 + r0; - r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x473a0; - pc=0x63400; - run_63400(); return; - case 0x473a0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; - } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x46ab4; - run_46a00(); return; - case 0x473bc: - r4 = r21 + r0; - r5 = r22 + r0; - r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x473d0; - pc=0x63400; - run_63400(); return; - case 0x473d0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; - } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x46ae4; - run_46a00(); return; - case 0x473ec: - r5 = 7 << 16; - r23 = r5 + 1024; - case 0x473f4: - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r16; - r2 = r2 + r16; - case 0x47400: - pc=0x47400; + /* Next insn is delay slot */ + r31 = 0x4c570; + pc = 0x53a00; + run_53a00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4c570: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; + } + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r8 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x4c528; + continue; + case 0x4c58c: + r4 = r21 + r0; + r5 = r22 + r0; + r6 = r29 + 1168; + /* Next insn is delay slot */ + r31 = 0x4c5a0; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c5a0: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; + } + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r8 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x4bcb4; + run_4bc00(); + return; + case 0x4c5bc: + r4 = r21 + r0; + r5 = r22 + r0; + r6 = r29 + 1168; + /* Next insn is delay slot */ + r31 = 0x4c5d0; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c5d0: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; + } + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r8 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x4bce4; + run_4bc00(); + return; + case 0x4c5ec: + r5 = 6 << 16; + r23 = r5 + -27076; + case 0x4c5f4: + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r16; + r2 = r2 + r16; + case 0x4c600: + pc = 0x4c600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_47400() throws ExecutionException { /* 0x47400 - 0x47600 */ + + private final void run_4c600() throws ExecutionException { /* 0x4c600 - 0x4c800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x47400: - /* Next insn is delay slot */ - pc=0x46b20; - run_46a00(); return; - case 0x47408: + for (;;) { + switch (pc) { + case 0x4c600: + /* Next insn is delay slot */ + pc = 0x4bd20; + run_4bc00(); + return; + case 0x4c608: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x4741c; - pc=0x63400; - run_63400(); return; - case 0x4741c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4c61c; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c61c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x46248; - run_46200(); return; - case 0x47434: + /* Next insn is delay slot */ + pc = 0x4b448; + run_4b400(); + return; + case 0x4c634: r3 = r0 + 45; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 - r2; r3 = r0 + 45; r4 = r0 + 1; - /* Next insn is delay slot */ - pc=0x4656c; - run_46400(); return; - case 0x47450: - f12 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; - writePages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff] = r8; - f13 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x47464; - pc=0x37a00; - run_37a00(); return; - case 0x47464: - r8 = readPages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x47888; - run_47800(); return; + /* Next insn is delay slot */ + pc = 0x4b76c; + run_4b600(); + return; + case 0x4c650: + f12 = readPages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff]; + writePages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff] = r8; + f13 = readPages[(r29 + 1248) >>> 12][((r29 + 1248) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x4c664; + pc = 0x3ee00; + run_3ee00(); + return; + case 0x4c664: + r8 = readPages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4ca88; + run_4ca00(); + return; } r9 = r0 + -33; r2 = r0 + -1; r20 = r18 & r9; - if(r30 == r2) { - /* Next insn is delay slot */ - pc=0x47df4; - run_47c00(); return; + if (r30 == r2) { + /* Next insn is delay slot */ + pc = 0x4cff4; + run_4ce00(); + return; } r2 = r0 + 71; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x47d14; - run_47c00(); return; + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x4cf14; + run_4ce00(); + return; } - case 0x47490: - r2 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; + case 0x4c690: + r2 = readPages[(r29 + 1248) >>> 12][((r29 + 1248) >>> 2) & 0x3ff]; r23 = r17 | 256; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x47d68; - run_47c00(); return; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4cf68; + run_4ce00(); + return; } - f0 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r0; - f1 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; - writePages[(r29+1276)>>>12][((r29+1276)>>>2)&0x3ff] = f0; - writePages[(r29+1272)>>>12][((r29+1272)>>>2)&0x3ff] = f1; - case 0x474b8: + f0 = readPages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff]; + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r0; + f1 = readPages[(r29 + 1248) >>> 12][((r29 + 1248) >>> 2) & 0x3ff]; + writePages[(r29 + 1276) >>> 12][((r29 + 1276) >>> 2) & 0x3ff] = f0; + writePages[(r29 + 1272) >>> 12][((r29 + 1272) >>> 2) & 0x3ff] = f1; + case 0x4c6b8: r2 = r0 + 102; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x47b68; - run_47a00(); return; + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x4cd68; + run_4cc00(); + return; } r2 = r0 + 70; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x47b68; - run_47a00(); return; + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x4cd68; + run_4cc00(); + return; } r2 = r0 + 69; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x47d5c; - run_47c00(); return; + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x4cf5c; + run_4ce00(); + return; } r5 = r30 + r0; - case 0x474e0: + case 0x4c6e0: r2 = r0 + 2; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; r2 = r29 + 1200; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; r2 = r29 + 1196; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - r7 = readPages[(r29+1276)>>>12][((r29+1276)>>>2)&0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r2; + r7 = readPages[(r29 + 1276) >>> 12][((r29 + 1276) >>> 2) & 0x3ff]; r2 = r29 + 1180; - r6 = readPages[(r29+1272)>>>12][((r29+1272)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r5; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; + r6 = readPages[(r29 + 1272) >>> 12][((r29 + 1272) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; r4 = r21 + r0; - writePages[(r29+1280)>>>12][((r29+1280)>>>2)&0x3ff] = r5; - writePages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - r31=0x47520; - pc=0x57400; - run_57400(); return; - case 0x47520: + writePages[(r29 + 1280) >>> 12][((r29 + 1280) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff] = r8; + /* Next insn is delay slot */ + r31 = 0x4c720; + pc = 0x4e600; + run_4e600(); + return; + case 0x4c720: r16 = r2 + r0; r2 = r0 + 103; - r5 = readPages[(r29+1280)>>>12][((r29+1280)>>>2)&0x3ff]; - r8 = readPages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff]; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x47544; + r5 = readPages[(r29 + 1280) >>> 12][((r29 + 1280) >>> 2) & 0x3ff]; + r8 = readPages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff]; + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x4c744; continue; } r2 = r0 + 71; - if(r18 != r2) { - /* Next insn is delay slot */ - pc=0x47550; + if (r18 != r2) { + /* Next insn is delay slot */ + pc = 0x4c750; continue; } - case 0x47544: + case 0x4c744: r2 = r17 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x47e00; - run_47e00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4d000; + run_4d000(); + return; } - case 0x47550: + case 0x4c750: r2 = r0 + 70; r4 = r16 + r5; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x47bd8; - run_47a00(); return; + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x4cdd8; + run_4cc00(); + return; } - case 0x47560: + case 0x4c760: f0 = r0; - f2 = readPages[(r29+1276)>>>12][((r29+1276)>>>2)&0x3ff]; + f2 = readPages[(r29 + 1276) >>> 12][((r29 + 1276) >>> 2) & 0x3ff]; f1 = r0; - f3 = readPages[(r29+1272)>>>12][((r29+1272)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x47bcc; - run_47a00(); return; + f3 = readPages[(r29 + 1272) >>> 12][((r29 + 1272) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4cdcc; + run_4cc00(); + return; } - r2 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1180) >>> 12][((r29 + 1180) >>> 2) & 0x3ff]; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x475bc; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4c7bc; continue; } r5 = r0 + 48; - case 0x4759c: + case 0x4c79c: r3 = r2 + 1; - writePages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff] = r3; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; + writePages[(r29 + 1180) >>> 12][((r29 + 1180) >>> 2) & 0x3ff] = r3; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r29 + 1180) >>> 12][((r29 + 1180) >>> 2) & 0x3ff]; r3 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x4759c; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4c79c; continue; } - case 0x475bc: + case 0x4c7bc: r2 = r2 - r16; - writePages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff] = r2; + writePages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff] = r2; r2 = r0 + 71; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x47b18; - run_47a00(); return; + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x4cd18; + run_4cc00(); + return; } r2 = r18 < 102 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x47fa0; - run_47e00(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4d1a0; + run_4d000(); + return; } - r3 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; + r3 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; r2 = r0 + 102; - writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r3; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x47e0c; - run_47e00(); return; + writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r3; + if (r18 == r2) { + /* Next insn is delay slot */ + pc = 0x4d00c; + run_4d000(); + return; } - case 0x475f0: - r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; - r4 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; + case 0x4c7f0: + r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; r2 = r4 < r3 ? 1 : 0; - case 0x47600: - pc=0x47600; + case 0x4c800: + pc = 0x4c800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_47600() throws ExecutionException { /* 0x47600 - 0x47800 */ + + private final void run_4c800() throws ExecutionException { /* 0x4c800 - 0x4ca00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x47600: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x47d90; - run_47c00(); return; + for (;;) { + switch (pc) { + case 0x4c800: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4cf90; + run_4ce00(); + return; } r17 = r17 & 1; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x47dc8; - run_47c00(); return; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x4cfc8; + run_4ce00(); + return; } r2 = r4 + r0; - if(r4 < 0) { - /* Next insn is delay slot */ - pc=0x47fbc; - run_47e00(); return; + if (r4 < 0) { + /* Next insn is delay slot */ + pc = 0x4d1bc; + run_4d000(); + return; } - case 0x47620: - r3 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; + case 0x4c820: + r3 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; r18 = r0 + 103; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r3; - case 0x4762c: - r5 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x47af8; - run_47a00(); return; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r3; + case 0x4c82c: + r5 = readPages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff]; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x4ccf8; + run_4cc00(); + return; } - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r2; + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r2; r17 = r23 + r0; r30 = r0 + r0; - /* Next insn is delay slot */ - pc=0x46094; - run_46000(); return; - case 0x47654: - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4b294; + run_4b200(); + return; + case 0x4c854: + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x46820; - run_46800(); return; - case 0x47668: - r2 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4ba20; + run_4ba00(); + return; + case 0x4c868: + r2 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; r3 = r2 + 7; - /* Next insn is delay slot */ - pc=0x4672c; - run_46600(); return; - case 0x4767c: - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4b92c; + run_4b800(); + return; + case 0x4c87c: + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; r4 = r0 + r0; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x4656c; - run_46400(); return; - case 0x4769c: - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4b76c; + run_4b600(); + return; + case 0x4c89c: + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x4667c; - run_46600(); return; - case 0x476b0: - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4b87c; + run_4b800(); + return; + case 0x4c8b0: + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r3; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r3; r4 = r0 + 1; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x4656c; - run_46400(); return; - case 0x476d0: - r4 = 7 << 16; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r23 = r4 + 1024; - case 0x476dc: + /* Next insn is delay slot */ + pc = 0x4b76c; + run_4b600(); + return; + case 0x4c8d0: + r4 = 6 << 16; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r23 = r4 + -27076; + case 0x4c8dc: r3 = r3 + 1; r2 = r2 + r20; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; r3 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x47214; - run_47200(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4c414; + run_4c400(); + return; } r8 = r8 + 8; - /* Next insn is delay slot */ - pc=0x47238; - run_47200(); return; - case 0x4770c: - r4 = 7 << 16; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r23 = r4 + 1024; - /* Next insn is delay slot */ - pc=0x462f0; - run_46200(); return; - case 0x47720: + /* Next insn is delay slot */ + pc = 0x4c438; + run_4c400(); + return; + case 0x4c90c: + r4 = 6 << 16; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r23 = r4 + -27076; + /* Next insn is delay slot */ + pc = 0x4b4f0; + run_4b400(); + return; + case 0x4c920: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x47734; - pc=0x63400; - run_63400(); return; - case 0x47734: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4c934; + pc = 0x53a00; + run_53a00(); + return; + case 0x4c934: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x46ccc; - run_46c00(); return; - case 0x4774c: - r4 = 7 << 16; - r4 = r4 + 276; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r4; + /* Next insn is delay slot */ + pc = 0x4becc; + run_4be00(); + return; + case 0x4c94c: + r4 = 5 << 16; + r4 = r4 + 30860; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r4; r4 = r0 + 1; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; - r4 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; + r4 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r2 = r2 + 1; r4 = r4 + 1; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r4; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r4; r4 = r4 < 8 ? 1 : 0; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x478e8; - run_47800(); return; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4cae8; + run_4ca00(); + return; } r8 = r8 + 8; r18 = r3 + r0; - case 0x47788: - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x477ac; + case 0x4c988: + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x4c9ac; continue; } - r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x477ac; + r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4c9ac; continue; } r3 = r17 & 1; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x46354; - run_46200(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4b554; + run_4b400(); + return; } - case 0x477ac: - r3 = readPages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1256)>>>12][((r29+1256)>>>2)&0x3ff]; + case 0x4c9ac: + r3 = readPages[(r29 + 1236) >>> 12][((r29 + 1236) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1256) >>> 12][((r29 + 1256) >>> 2) & 0x3ff]; r2 = r2 + r3; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; r3 = r3 + 1; r4 = r3 < 8 ? 1 : 0; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x47d28; - run_47c00(); return; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4cf28; + run_4ce00(); + return; } r8 = r8 + 8; - case 0x477e8: + case 0x4c9e8: r18 = r0 - r18; - if(r18 <= 0) { - /* Next insn is delay slot */ - pc=0x4796c; - run_47800(); return; + if (r18 <= 0) { + /* Next insn is delay slot */ + pc = 0x4cb6c; + run_4ca00(); + return; } r4 = r18 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x47a28; - run_47a00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4cc28; + run_4cc00(); + return; } - case 0x47800: - pc=0x47800; + case 0x4ca00: + pc = 0x4ca00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_47800() throws ExecutionException { /* 0x47800 - 0x47a00 */ + + private final void run_4ca00() throws ExecutionException { /* 0x4ca00 - 0x4cc00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x47800: - r5 = 7 << 16; - r23 = r5 + 1024; + for (;;) { + switch (pc) { + case 0x4ca00: + r5 = 6 << 16; + r23 = r5 + -27076; r20 = r0 + 16; - /* Next insn is delay slot */ - pc=0x47828; + /* Next insn is delay slot */ + pc = 0x4ca28; continue; - case 0x47814: + case 0x4ca14: r8 = r8 + 8; - case 0x47818: + case 0x4ca18: r18 = r18 + -16; r4 = r18 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x47a30; - run_47a00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4cc30; + run_4cc00(); + return; } - case 0x47828: + case 0x4ca28: r3 = r3 + 1; r2 = r2 + 16; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r20; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x47814; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4ca14; continue; } r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x47860; - pc=0x63400; - run_63400(); return; - case 0x47860: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4ca60; + pc = 0x53a00; + run_53a00(); + return; + case 0x4ca60: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x47818; + /* Next insn is delay slot */ + pc = 0x4ca18; continue; - case 0x4787c: - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r30; - /* Next insn is delay slot */ - pc=0x46070; - run_46000(); return; - case 0x47888: + case 0x4ca7c: + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r30; + /* Next insn is delay slot */ + pc = 0x4b270; + run_4b200(); + return; + case 0x4ca88: r2 = r18 < 72 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x47b58; - run_47a00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4cd58; + run_4cc00(); + return; } - r16 = 7 << 16; - r16 = r16 + 220; - case 0x4789c: + r16 = 6 << 16; + r16 = r16 + -27876; + case 0x4ca9c: r2 = r0 + -129; r17 = r17 & r2; r5 = r0 + 3; r2 = r0 + 3; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r5; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r2; r30 = r0 + r0; - writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x46094; - run_46000(); return; - case 0x478c8: - r16 = 7 << 16; - r16 = r16 + 216; - /* Next insn is delay slot */ - pc=0x467b0; - run_46600(); return; - case 0x478d8: + writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4b294; + run_4b200(); + return; + case 0x4cac8: + r16 = 6 << 16; + r16 = r16 + -27880; + /* Next insn is delay slot */ + pc = 0x4b9b0; + run_4b800(); + return; + case 0x4cad8: r30 = r0 + -1; r3 = r4 + r0; - /* Next insn is delay slot */ - pc=0x45de8; - run_45c00(); return; - case 0x478e8: - r4 = r21 + r0; - r5 = r22 + r0; - r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x478fc; - pc=0x63400; - run_63400(); return; - case 0x478fc: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; - } - r18 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x47788; - run_47600(); return; - case 0x47918: - r4 = r21 + r0; - r5 = r22 + r0; - r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x4792c; - pc=0x63400; - run_63400(); return; - case 0x4792c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; - } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x46d2c; - run_46c00(); return; - case 0x47944: - r4 = r21 + r0; - r5 = r22 + r0; - r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x47958; - pc=0x63400; - run_63400(); return; - case 0x47958: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; - } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r8 = r29 + 40; - case 0x4796c: - r4 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r16; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r4; - r2 = r4 + r2; - /* Next insn is delay slot */ - pc=0x46b50; - run_46a00(); return; - case 0x47984: - writePages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - r31=0x47990; - pc=0x10268; - run_10200(); return; - case 0x47990: - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; - r8 = readPages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff]; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x46080; - run_46000(); return; - } - case 0x479a0: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x46080; - run_46000(); return; - case 0x479ac: - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - writePages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff] = r19; - /* Next insn is delay slot */ - pc=0x46188; - run_46000(); return; - case 0x479c0: - r20 = r0 + r0; - /* Next insn is delay slot */ - pc=0x47044; - run_47000(); return; - case 0x479cc: - r4 = r21 + r0; - r5 = r22 + r0; - r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x479e0; - pc=0x63400; - run_63400(); return; - case 0x479e0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; - } - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x4703c; - run_47000(); return; - case 0x479f8: - r4 = r21 + r0; - r5 = r22 + r0; - case 0x47a00: - pc=0x47a00; + /* Next insn is delay slot */ + pc = 0x4afe8; + run_4ae00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4cae8: + r4 = r21 + r0; + r5 = r22 + r0; + r6 = r29 + 1168; + /* Next insn is delay slot */ + r31 = 0x4cafc; + pc = 0x53a00; + run_53a00(); + return; + case 0x4cafc: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; + } + r18 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r8 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x4c988; + run_4c800(); + return; + case 0x4cb18: + r4 = r21 + r0; + r5 = r22 + r0; + r6 = r29 + 1168; + /* Next insn is delay slot */ + r31 = 0x4cb2c; + pc = 0x53a00; + run_53a00(); + return; + case 0x4cb2c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; + } + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r8 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x4bf2c; + run_4be00(); + return; + case 0x4cb44: + r4 = r21 + r0; + r5 = r22 + r0; + r6 = r29 + 1168; + /* Next insn is delay slot */ + r31 = 0x4cb58; + pc = 0x53a00; + run_53a00(); + return; + case 0x4cb58: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; + } + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r8 = r29 + 40; + case 0x4cb6c: + r4 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r16; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r4; + r2 = r4 + r2; + /* Next insn is delay slot */ + pc = 0x4bd50; + run_4bc00(); + return; + case 0x4cb84: + writePages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff] = r8; + /* Next insn is delay slot */ + r31 = 0x4cb90; + pc = 0x10268; + run_10200(); + return; + case 0x4cb90: + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r2; + r8 = readPages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff]; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x4b280; + run_4b200(); + return; + } + case 0x4cba0: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x4b280; + run_4b200(); + return; + case 0x4cbac: + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + writePages[(r29 + 1244) >>> 12][((r29 + 1244) >>> 2) & 0x3ff] = r19; + /* Next insn is delay slot */ + pc = 0x4b388; + run_4b200(); + return; + case 0x4cbc0: + r20 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x4c244; + run_4c200(); + return; + case 0x4cbcc: + r4 = r21 + r0; + r5 = r22 + r0; + r6 = r29 + 1168; + /* Next insn is delay slot */ + r31 = 0x4cbe0; + pc = 0x53a00; + run_53a00(); + return; + case 0x4cbe0: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; + } + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r8 = r29 + 40; + /* Next insn is delay slot */ + pc = 0x4c23c; + run_4c200(); + return; + case 0x4cbf8: + r4 = r21 + r0; + r5 = r22 + r0; + case 0x4cc00: + pc = 0x4cc00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_47a00() throws ExecutionException { /* 0x47a00 - 0x47c00 */ + + private final void run_4cc00() throws ExecutionException { /* 0x4cc00 - 0x4ce00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x47a00: + for (;;) { + switch (pc) { + case 0x4cc00: r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x47a0c; - pc=0x63400; - run_63400(); return; - case 0x47a0c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4cc0c; + pc = 0x53a00; + run_53a00(); + return; + case 0x4cc0c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r3 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; + r3 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x47298; - run_47200(); return; - case 0x47a28: - r4 = 7 << 16; - r23 = r4 + 1024; - case 0x47a30: + /* Next insn is delay slot */ + pc = 0x4c498; + run_4c400(); + return; + case 0x4cc28: + r4 = 6 << 16; + r23 = r4 + -27076; + case 0x4cc30: r3 = r3 + 1; r2 = r2 + r18; r4 = r3 < 8 ? 1 : 0; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r23; - writePages[(r8+4)>>>12][((r8+4)>>>2)&0x3ff] = r18; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r2; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r3; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x47944; - run_47800(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r23; + writePages[(r8 + 4) >>> 12][((r8 + 4) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff] = r3; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4cb44; + run_4ca00(); + return; } r8 = r8 + 8; - /* Next insn is delay slot */ - pc=0x4796c; - run_47800(); return; - case 0x47a60: + /* Next insn is delay slot */ + pc = 0x4cb6c; + run_4ca00(); + return; + case 0x4cc60: r20 = r0 + r0; - /* Next insn is delay slot */ - pc=0x472f4; - run_47200(); return; - case 0x47a6c: + /* Next insn is delay slot */ + pc = 0x4c4f4; + run_4c400(); + return; + case 0x4cc6c: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x47a80; - pc=0x63400; - run_63400(); return; - case 0x47a80: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4cc80; + pc = 0x53a00; + run_53a00(); + return; + case 0x4cc80: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r3 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; - r5 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; + r3 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; r3 = r5 - r3; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x472ec; - run_47200(); return; - case 0x47aa4: - r3 = (r30&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; + /* Next insn is delay slot */ + pc = 0x4c4ec; + run_4c400(); + return; + case 0x4cca4: + r3 = (r30 & 0xffffffffL) < (7 & 0xffffffffL) ? 1 : 0; r2 = r30 + r0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x47ab8; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4ccb8; continue; } r2 = r0 + 6; - case 0x47ab8: - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x47ef0; - run_47e00(); return; + case 0x4ccb8: + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4d0f0; + run_4d000(); + return; } - case 0x47ac4: - r16 = 7 << 16; - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r2; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r20; + case 0x4ccc4: + r16 = 6 << 16; + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r20; r3 = r0 + r0; r30 = r0 + r0; - writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; - r16 = r16 + 268; - /* Next insn is delay slot */ - pc=0x460ac; - run_46000(); return; - case 0x47ae8: - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - writePages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff] = r19; - /* Next insn is delay slot */ - pc=0x46408; - run_46400(); return; - case 0x47af8: + writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; + r16 = r16 + -27828; + /* Next insn is delay slot */ + pc = 0x4b2ac; + run_4b200(); + return; + case 0x4cce8: + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + writePages[(r29 + 1244) >>> 12][((r29 + 1244) >>> 2) & 0x3ff] = r19; + /* Next insn is delay slot */ + pc = 0x4b608; + run_4b600(); + return; + case 0x4ccf8: r3 = r0 + 45; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r2; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r2; r17 = r23 + r0; r3 = r0 + 45; r30 = r0 + r0; - /* Next insn is delay slot */ - pc=0x4609c; - run_46000(); return; - case 0x47b18: - r2 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4b29c; + run_4b200(); + return; + case 0x4cd18: + r2 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; r3 = r2 < -3 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x47c58; - run_47c00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4ce58; + run_4ce00(); + return; } r3 = r30 < r2 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x47c58; - run_47c00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4ce58; + run_4ce00(); + return; } - writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x475f0; - run_47400(); return; - case 0x47b44: + writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x4c7f0; + run_4c600(); + return; + case 0x4cd44: r2 = r0 + 45; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r3 = r0 + 45; - /* Next insn is delay slot */ - pc=0x4679c; - run_46600(); return; - case 0x47b58: - r16 = 7 << 16; - r16 = r16 + 224; - /* Next insn is delay slot */ - pc=0x4789c; - run_47800(); return; - case 0x47b68: + /* Next insn is delay slot */ + pc = 0x4b99c; + run_4b800(); + return; + case 0x4cd58: + r16 = 6 << 16; + r16 = r16 + -27872; + /* Next insn is delay slot */ + pc = 0x4ca9c; + run_4ca00(); + return; + case 0x4cd68: r2 = r0 + 3; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; r2 = r29 + 1200; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r2; r2 = r29 + 1196; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r2; - r7 = readPages[(r29+1276)>>>12][((r29+1276)>>>2)&0x3ff]; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r2; + r7 = readPages[(r29 + 1276) >>> 12][((r29 + 1276) >>> 2) & 0x3ff]; r2 = r29 + 1180; - r6 = readPages[(r29+1272)>>>12][((r29+1272)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r30; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; + r6 = readPages[(r29 + 1272) >>> 12][((r29 + 1272) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; r4 = r21 + r0; - writePages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - r31=0x47ba4; - pc=0x57400; - run_57400(); return; - case 0x47ba4: + writePages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff] = r8; + /* Next insn is delay slot */ + r31 = 0x4cda4; + pc = 0x4e600; + run_4e600(); + return; + case 0x4cda4: r16 = r2 + r0; r5 = r30 + r0; - r8 = readPages[(r29+1284)>>>12][((r29+1284)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x47550; - run_47400(); return; - case 0x47bb8: - r5 = 7 << 16; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r23 = r5 + 1024; - /* Next insn is delay slot */ - pc=0x46e80; - run_46e00(); return; - case 0x47bcc: + r8 = readPages[(r29 + 1284) >>> 12][((r29 + 1284) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4c750; + run_4c600(); + return; + case 0x4cdb8: + r5 = 6 << 16; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; + r23 = r5 + -27076; + /* Next insn is delay slot */ + pc = 0x4c080; + run_4c000(); + return; + case 0x4cdcc: r2 = r4 + r0; - /* Next insn is delay slot */ - pc=0x475bc; - run_47400(); return; - case 0x47bd8: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + /* Next insn is delay slot */ + pc = 0x4c7bc; + run_4c600(); + return; + case 0x4cdd8: + addr = r16 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; r2 = r0 + 48; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x47bfc; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x4cdfc; continue; } - case 0x47be8: - r2 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; + case 0x4cde8: + r2 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; r4 = r4 + r2; - /* Next insn is delay slot */ - pc=0x47560; - run_47400(); return; - case 0x47bfc: - f0 = r0; - case 0x47c00: - pc=0x47c00; + /* Next insn is delay slot */ + pc = 0x4c760; + run_4c600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4cdfc: + f0 = r0; + case 0x4ce00: + pc = 0x4ce00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_47c00() throws ExecutionException { /* 0x47c00 - 0x47e00 */ + + private final void run_4ce00() throws ExecutionException { /* 0x4ce00 - 0x4d000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x47c00: - f2 = readPages[(r29+1276)>>>12][((r29+1276)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x4ce00: + f2 = readPages[(r29 + 1276) >>> 12][((r29 + 1276) >>> 2) & 0x3ff]; f1 = r0; - f3 = readPages[(r29+1272)>>>12][((r29+1272)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x47be8; - run_47a00(); return; + f3 = readPages[(r29 + 1272) >>> 12][((r29 + 1272) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4cde8; + run_4cc00(); + return; } r2 = r0 + 1; r2 = r2 - r5; - writePages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff] = r2; + writePages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff] = r2; r4 = r4 + r2; - /* Next insn is delay slot */ - pc=0x47560; - run_47400(); return; - case 0x47c38: - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r30; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r30; - addr=r29+1206; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + /* Next insn is delay slot */ + pc = 0x4c760; + run_4c600(); + return; + case 0x4ce38: + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r30; + addr = r29 + 1206; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r20; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r20; r30 = r0 + r0; - writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x46094; - run_46000(); return; - case 0x47c58: + writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4b294; + run_4b200(); + return; + case 0x4ce58: r18 = r18 + -2; - case 0x47c5c: + case 0x4ce5c: r2 = r2 + -1; - writePages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff] = r2; - addr=r29+1188; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x47f3c; - run_47e00(); return; + writePages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff] = r2; + addr = r29 + 1188; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4d13c; + run_4d000(); + return; } r3 = r0 + 43; - addr=r29+1189; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x47c78: + addr = r29 + 1189; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x4ce78: r3 = r2 < 10 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x47e38; - run_47e00(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4d038; + run_4d000(); + return; } r2 = r2 + 48; r3 = r0 + 48; - addr=r29+1191; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r29+1190; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 1191; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + addr = r29 + 1190; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r29 + 1192; r4 = r29 + 1188; - case 0x47c9c: - r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; + case 0x4ce9c: + r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; r4 = r2 - r4; r3 = r3 + r4; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r4; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r3; + r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; + writePages[(r29 + 1260) >>> 12][((r29 + 1260) >>> 2) & 0x3ff] = r4; r2 = r3 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x47ce8; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4cee8; continue; } - case 0x47cc0: - r3 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; + case 0x4cec0: + r3 = readPages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff]; r3 = r3 + 1; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r3; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r3; r2 = r3 + r0; - if(r3 < 0) { - /* Next insn is delay slot */ - pc=0x47d04; + if (r3 < 0) { + /* Next insn is delay slot */ + pc = 0x4cf04; continue; } - case 0x47cdc: - writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x4762c; - run_47600(); return; - case 0x47ce8: + case 0x4cedc: + writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4c82c; + run_4c800(); + return; + case 0x4cee8: r17 = r17 & 1; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x47cc0; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x4cec0; continue; } - r2 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x47cdc; + r2 = readPages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff]; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x4cedc; continue; } - case 0x47d04: + case 0x4cf04: r2 = r0 + r0; - writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x4762c; - run_47600(); return; - case 0x47d14: - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x47490; - run_47400(); return; + writePages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4c82c; + run_4c800(); + return; + case 0x4cf14: + if (r30 != r0) { + /* Next insn is delay slot */ + pc = 0x4c690; + run_4c600(); + return; } r30 = r0 + 1; - /* Next insn is delay slot */ - pc=0x47490; - run_47400(); return; - case 0x47d28: + /* Next insn is delay slot */ + pc = 0x4c690; + run_4c600(); + return; + case 0x4cf28: r4 = r21 + r0; r5 = r22 + r0; r6 = r29 + 1168; - /* Next insn is delay slot */ - r31=0x47d3c; - pc=0x63400; - run_63400(); return; - case 0x47d3c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x45fcc; - run_45e00(); return; + /* Next insn is delay slot */ + r31 = 0x4cf3c; + pc = 0x53a00; + run_53a00(); + return; + case 0x4cf3c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4b1cc; + run_4b000(); + return; } - r18 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; - r2 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r3 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; + r18 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; + r2 = readPages[(r29 + 1176) >>> 12][((r29 + 1176) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 1172) >>> 12][((r29 + 1172) >>> 2) & 0x3ff]; r8 = r29 + 40; - /* Next insn is delay slot */ - pc=0x477e8; - run_47600(); return; - case 0x47d5c: + /* Next insn is delay slot */ + pc = 0x4c9e8; + run_4c800(); + return; + case 0x4cf5c: r5 = r30 + 1; - /* Next insn is delay slot */ - pc=0x474e0; - run_47400(); return; - case 0x47d68: - r3 = readPages[(r29+1248)>>>12][((r29+1248)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4c6e0; + run_4c600(); + return; + case 0x4cf68: + r3 = readPages[(r29 + 1248) >>> 12][((r29 + 1248) >>> 2) & 0x3ff]; r2 = 32768 << 16; - r4 = readPages[(r29+1252)>>>12][((r29+1252)>>>2)&0x3ff]; + r4 = readPages[(r29 + 1252) >>> 12][((r29 + 1252) >>> 2) & 0x3ff]; r2 = r3 ^ r2; r5 = r0 + 45; - writePages[(r29+1272)>>>12][((r29+1272)>>>2)&0x3ff] = r2; - writePages[(r29+1276)>>>12][((r29+1276)>>>2)&0x3ff] = r4; - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x474b8; - run_47400(); return; - case 0x47d90: - r3 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; - if(r3 <= 0) { - /* Next insn is delay slot */ - pc=0x47f2c; - run_47e00(); return; + writePages[(r29 + 1272) >>> 12][((r29 + 1272) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 1276) >>> 12][((r29 + 1276) >>> 2) & 0x3ff] = r4; + writePages[(r29 + 1212) >>> 12][((r29 + 1212) >>> 2) & 0x3ff] = r5; + /* Next insn is delay slot */ + pc = 0x4c6b8; + run_4c600(); + return; + case 0x4cf90: + r3 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; + if (r3 <= 0) { + /* Next insn is delay slot */ + pc = 0x4d12c; + run_4d000(); + return; } r2 = r0 + 1; - case 0x47da4: - r3 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; + case 0x4cfa4: + r3 = readPages[(r29 + 1240) >>> 12][((r29 + 1240) >>> 2) & 0x3ff]; r2 = r2 + r3; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x47de4; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r2; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4cfe4; continue; } - case 0x47dbc: + case 0x4cfbc: r18 = r0 + 103; - /* Next insn is delay slot */ - pc=0x4762c; - run_47600(); return; - case 0x47dc8: - r3 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4c82c; + run_4c800(); + return; + case 0x4cfc8: + r3 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; r3 = r3 + 1; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r3; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r3; r2 = r3 + r0; - if(r3 >= 0) { - /* Next insn is delay slot */ - pc=0x47dbc; + if (r3 >= 0) { + /* Next insn is delay slot */ + pc = 0x4cfbc; continue; } - case 0x47de4: + case 0x4cfe4: r2 = r0 + r0; r18 = r0 + 103; - /* Next insn is delay slot */ - pc=0x4762c; - run_47600(); return; - case 0x47df4: - r30 = r0 + 6; - /* Next insn is delay slot */ - pc=0x47490; - run_47400(); return; - case 0x47e00: - pc=0x47e00; + /* Next insn is delay slot */ + pc = 0x4c82c; + run_4c800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4cff4: + r30 = r0 + 6; + /* Next insn is delay slot */ + pc = 0x4c690; + run_4c600(); + return; + case 0x4d000: + pc = 0x4d000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_47e00() throws ExecutionException { /* 0x47e00 - 0x48000 */ + + private final void run_4d000() throws ExecutionException { /* 0x4d000 - 0x4d200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x47e00: - r2 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x475bc; - run_47400(); return; - case 0x47e0c: - if(r3 <= 0) { - /* Next insn is delay slot */ - pc=0x47f50; + for (;;) { + switch (pc) { + case 0x4d000: + r2 = readPages[(r29 + 1180) >>> 12][((r29 + 1180) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4c7bc; + run_4c600(); + return; + case 0x4d00c: + if (r3 <= 0) { + /* Next insn is delay slot */ + pc = 0x4d150; continue; } - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x47ecc; + if (r30 != r0) { + /* Next insn is delay slot */ + pc = 0x4d0cc; continue; } r17 = r17 & 1; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x47ecc; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x4d0cc; continue; } r2 = r3 + r0; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x4762c; - run_47600(); return; - case 0x47e38: + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4c82c; + run_4c800(); + return; + case 0x4d038: r6 = r29 + 1187; r3 = r6 + r0; r4 = r0 + 10; - case 0x47e44: - if(r4 != r0) { - /* Next insn is delay slot */ - hi = r2%r4; lo = r2/r4; - pc=0x47e50; + case 0x4d044: + if (r4 != r0) { + /* Next insn is delay slot */ + hi = r2 % r4; + lo = r2 / r4; + pc = 0x4d050; continue; } - hi = r2%r4; lo = r2/r4; + hi = r2 % r4; + lo = r2 / r4; throw new ExecutionException("Break"); - case 0x47e50: + case 0x4d050: r3 = r3 + -1; r5 = hi; r5 = r5 + 48; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = lo; r5 = r2 < 10 ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x47e44; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x4d044; continue; } r2 = r2 + 48; @@ -58460,8851 +61267,1120 @@ public final class AcmeCrossAssembler extends UnixRuntime { r4 = r3 + -1; r5 = r5 >> 24; r2 = ((r4 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x47fac; + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4d1ac; continue; } r2 = r29 + 1190; - /* Next insn is delay slot */ - pc=0x47ea0; + /* Next insn is delay slot */ + pc = 0x4d0a0; continue; - case 0x47e9c: - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x4d09c: + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r5 = tmp; - case 0x47ea0: + case 0x4d0a0: r2 = r2 + 1; r4 = r4 + 1; - addr=r2+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r4 != r6) { - /* Next insn is delay slot */ - pc=0x47e9c; + addr = r2 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r4 != r6) { + /* Next insn is delay slot */ + pc = 0x4d09c; continue; } r4 = r29 + 1188; r2 = r4 - r3; r3 = r29 + 1190; r2 = r3 + r2; - /* Next insn is delay slot */ - pc=0x47c9c; - run_47c00(); return; - case 0x47ecc: - r3 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4ce9c; + run_4ce00(); + return; + case 0x4d0cc: + r3 = readPages[(r29 + 1232) >>> 12][((r29 + 1232) >>> 2) & 0x3ff]; r2 = r30 + 1; r2 = r3 + r2; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r2; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x4762c; - run_47600(); return; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r2; + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x4c82c; + run_4c800(); + return; } - case 0x47ee4: + case 0x4d0e4: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x4762c; - run_47600(); return; - case 0x47ef0: + /* Next insn is delay slot */ + pc = 0x4c82c; + run_4c800(); + return; + case 0x4d0f0: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x47ac4; - run_47a00(); return; - case 0x47efc: - r3 = readPages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff]; - r30 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4ccc4; + run_4cc00(); + return; + case 0x4d0fc: + r3 = readPages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff]; + r30 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r2 = r3 + 4; r3 = r4 + r0; - if(r30 >= 0) { - /* Next insn is delay slot */ - pc=0x46a00; - run_46a00(); return; + if (r30 >= 0) { + /* Next insn is delay slot */ + pc = 0x4bc00; + run_4bc00(); + return; } - writePages[(r29+1340)>>>12][((r29+1340)>>>2)&0x3ff] = r2; + writePages[(r29 + 1340) >>> 12][((r29 + 1340) >>> 2) & 0x3ff] = r2; r30 = r0 + -1; r16 = r3 + r0; - /* Next insn is delay slot */ - pc=0x45de0; - run_45c00(); return; - case 0x47f2c: + /* Next insn is delay slot */ + pc = 0x4afe0; + run_4ae00(); + return; + case 0x4d12c: r2 = r0 + 2; r2 = r2 - r3; - /* Next insn is delay slot */ - pc=0x47da4; - run_47c00(); return; - case 0x47f3c: + /* Next insn is delay slot */ + pc = 0x4cfa4; + run_4ce00(); + return; + case 0x4d13c: r3 = r0 + 45; r2 = r0 - r2; - addr=r29+1189; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x47c78; - run_47c00(); return; - case 0x47f50: - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x47f84; + addr = r29 + 1189; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r3 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x4ce78; + run_4ce00(); + return; + case 0x4d150: + if (r30 != r0) { + /* Next insn is delay slot */ + pc = 0x4d184; continue; } r17 = r17 & 1; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x47f84; + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x4d184; continue; } r3 = r0 + 1; r2 = r0 + 1; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x4762c; - run_47600(); return; - case 0x47f78: + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4c82c; + run_4c800(); + return; + case 0x4d178: r16 = r0 + -1; - /* Next insn is delay slot */ - pc=0x45f18; - run_45e00(); return; - case 0x47f84: + /* Next insn is delay slot */ + pc = 0x4b118; + run_4b000(); + return; + case 0x4d184: r30 = r30 + 2; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r30; + writePages[(r29 + 1216) >>> 12][((r29 + 1216) >>> 2) & 0x3ff] = r30; r2 = r30 + r0; - if(r30 >= 0) { - /* Next insn is delay slot */ - pc=0x4762c; - run_47600(); return; + if (r30 >= 0) { + /* Next insn is delay slot */ + pc = 0x4c82c; + run_4c800(); + return; } - /* Next insn is delay slot */ - pc=0x47ee4; + /* Next insn is delay slot */ + pc = 0x4d0e4; continue; - case 0x47fa0: - r2 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x47c5c; - run_47c00(); return; - case 0x47fac: + case 0x4d1a0: + r2 = readPages[(r29 + 1200) >>> 12][((r29 + 1200) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4ce5c; + run_4ce00(); + return; + case 0x4d1ac: r2 = r29 + 1190; r4 = r29 + 1188; - /* Next insn is delay slot */ - pc=0x47c9c; - run_47c00(); return; - case 0x47fbc: + /* Next insn is delay slot */ + pc = 0x4ce9c; + run_4ce00(); + return; + case 0x4d1bc: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x47620; - run_47600(); return; - case 0x48000: - pc=0x48000; + /* Next insn is delay slot */ + pc = 0x4c820; + run_4c800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4d200: + pc = 0x4d200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_48000() throws ExecutionException { /* 0x48000 - 0x48200 */ + + private final void run_4d200() throws ExecutionException { /* 0x4d200 - 0x4d400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x48000: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x45c00; - run_45c00(); return; - case 0x48200: - pc=0x48200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_48200() throws ExecutionException { /* 0x48200 - 0x48400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x48200: + for (;;) { + switch (pc) { + case 0x4d200: r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; r17 = r4 + r0; r18 = r5 + r0; r16 = r6 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x48238; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4d238; continue; } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x483e4; + r2 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4d3e4; continue; } - case 0x48238: - r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x4d238: + r2 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r3 = r2 & 65535; r4 = r3 & 8; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x483b8; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4d3b8; continue; } - r4 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x483b8; + r4 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4d3b8; continue; } - case 0x4826c: + case 0x4d26c: r3 = r3 & 8192; r18 = r18 & 255; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x482f4; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4d2f4; continue; } - r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; + r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; r4 = r3 - r4; r2 = r4 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x48324; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4d324; continue; } - case 0x48294: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + case 0x4d294: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r4 = r4 + 1; r2 = r2 + -1; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; r2 = r3 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x48368; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + if (r2 == r4) { + /* Next insn is delay slot */ + pc = 0x4d368; continue; } - case 0x482c0: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x4d2c0: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 & 1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x4838c; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4d38c; continue; } - case 0x482d4: + case 0x4d2d4: r2 = r18 + r0; - case 0x482d8: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + case 0x4d2d8: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x482f4: - r3 = readPages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff]; + case 0x4d2f4: + r3 = readPages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff]; r2 = r2 | 8192; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 + -8193; r2 = r3 & r2; - r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; + r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + writePages[(r16 + 100) >>> 12][((r16 + 100) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; r4 = r3 - r4; r2 = r4 < r2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x48294; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4d294; continue; } - case 0x48324: + case 0x4d324: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x48334; - pc=0x39800; - run_39800(); return; - case 0x48334: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x48380; + /* Next insn is delay slot */ + r31 = 0x4d334; + pc = 0x40c00; + run_40c00(); + return; + case 0x4d334: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4d380; continue; } - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r2 = r2 + -1; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; r2 = r3 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r18 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; r4 = r0 + 1; - if(r2 != r4) { - /* Next insn is delay slot */ - pc=0x482c0; + if (r2 != r4) { + /* Next insn is delay slot */ + pc = 0x4d2c0; continue; } - case 0x48368: + case 0x4d368: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x48378; - pc=0x39800; - run_39800(); return; - case 0x48378: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x482d4; + /* Next insn is delay slot */ + r31 = 0x4d378; + pc = 0x40c00; + run_40c00(); + return; + case 0x4d378: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4d2d4; continue; } - case 0x48380: + case 0x4d380: r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x482d8; + /* Next insn is delay slot */ + pc = 0x4d2d8; continue; - case 0x4838c: + case 0x4d38c: r2 = r0 + 10; - if(r18 != r2) { - /* Next insn is delay slot */ - pc=0x482d4; + if (r18 != r2) { + /* Next insn is delay slot */ + pc = 0x4d2d4; continue; } r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x483a8; - pc=0x39800; - run_39800(); return; - case 0x483a8: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x482d4; + /* Next insn is delay slot */ + r31 = 0x4d3a8; + pc = 0x40c00; + run_40c00(); + return; + case 0x4d3a8: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4d2d4; continue; } - /* Next insn is delay slot */ - pc=0x48380; + /* Next insn is delay slot */ + pc = 0x4d380; continue; - case 0x483b8: + case 0x4d3b8: r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x483c8; - pc=0x48600; - run_48600(); return; - case 0x483c8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x48380; + /* Next insn is delay slot */ + r31 = 0x4d3c8; + pc = 0x4d400; + run_4d400(); + return; + case 0x4d3c8: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4d380; continue; } - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; - r4 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; + r4 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; r3 = r2 & 65535; - /* Next insn is delay slot */ - pc=0x4826c; + /* Next insn is delay slot */ + pc = 0x4d26c; continue; - case 0x483e4: - /* Next insn is delay slot */ - r31=0x483ec; - pc=0x3a600; - run_3a600(); return; - case 0x483ec: - /* Next insn is delay slot */ - pc=0x48238; - continue; - case 0x48400: - pc=0x48400; + case 0x4d3e4: + /* Next insn is delay slot */ + r31 = 0x4d3ec; + pc = 0x41400; + run_41400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4d3ec: + /* Next insn is delay slot */ + pc = 0x4d238; + continue; + case 0x4d400: + pc = 0x4d400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_48400() throws ExecutionException { /* 0x48400 - 0x48600 */ + + private final void run_4d400() throws ExecutionException { /* 0x4d400 - 0x4d600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x48400: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x48200; - run_48200(); return; - case 0x48600: - pc=0x48600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_48600() throws ExecutionException { /* 0x48600 - 0x48800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x48600: + for (;;) { + switch (pc) { + case 0x4d400: r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; r17 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; r16 = r5 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x48634; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4d434; continue; } - r3 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x48744; + r3 = readPages[(r4 + 56) >>> 12][((r4 + 56) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4d544; continue; } - case 0x48634: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x4d434: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r6 = tmp; r2 = r6 & 65535; r3 = r2 & 8; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x486a4; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4d4a4; continue; } - r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x486d4; + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4d4d4; continue; } - case 0x4865c: + case 0x4d45c: r4 = r2 & 1; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x48704; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4d504; continue; } r2 = r2 & 2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x48754; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4d554; continue; } - r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - case 0x48680: - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x4871c; + r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + case 0x4d480: + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4d51c; continue; } - case 0x48688: + case 0x4d488: r2 = r0 + r0; - case 0x4868c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + case 0x4d48c: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x486a4: + case 0x4d4a4: r3 = r2 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x487b0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4d5b0; continue; } r2 = r2 & 4; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x48764; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4d564; continue; } - r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - case 0x486c0: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + case 0x4d4c0: r2 = r6 | 8; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r2 & 65535; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x4865c; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4d45c; continue; } - case 0x486d4: + case 0x4d4d4: r5 = r2 & 640; r4 = r0 + 512; - if(r5 == r4) { - /* Next insn is delay slot */ - pc=0x4865c; + if (r5 == r4) { + /* Next insn is delay slot */ + pc = 0x4d45c; continue; } r4 = r17 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x486f4; - pc=0x3e600; - run_3e600(); return; - case 0x486f4: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + /* Next insn is delay slot */ + r31 = 0x4d4f4; + pc = 0x44400; + run_44400(); + return; + case 0x4d4f4: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; - r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x4865c; + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4d45c; continue; - case 0x48704: - r2 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; + case 0x4d504: + r2 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r0; r2 = r0 - r2; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r2; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x48688; + writePages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff] = r2; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4d488; continue; } - case 0x4871c: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + case 0x4d51c: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r3 = tmp; r2 = r0 + r0; r4 = r3 & 128; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x4868c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4d48c; continue; } r3 = r3 | 64; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r3 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x4868c; + /* Next insn is delay slot */ + pc = 0x4d48c; continue; - case 0x48744: - /* Next insn is delay slot */ - r31=0x4874c; - pc=0x3a600; - run_3a600(); return; - case 0x4874c: - /* Next insn is delay slot */ - pc=0x48634; + case 0x4d544: + /* Next insn is delay slot */ + r31 = 0x4d54c; + pc = 0x41400; + run_41400(); + return; + case 0x4d54c: + /* Next insn is delay slot */ + pc = 0x4d434; continue; - case 0x48754: + case 0x4d554: r2 = r0 + r0; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x48680; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x4d480; continue; - case 0x48764: - r5 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x48794; + case 0x4d564: + r5 = readPages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x4d594; continue; } r2 = r16 + 64; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x48790; + if (r5 == r2) { + /* Next insn is delay slot */ + pc = 0x4d590; continue; } r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x4878c; - pc=0x3ca00; - run_3ca00(); return; - case 0x4878c: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + /* Next insn is delay slot */ + r31 = 0x4d58c; + pc = 0x42c00; + run_42c00(); + return; + case 0x4d58c: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r6 = tmp; - case 0x48790: - writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; - case 0x48794: - r3 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; + case 0x4d590: + writePages[(r16 + 48) >>> 12][((r16 + 48) >>> 2) & 0x3ff] = r0; + case 0x4d594: + r3 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; r2 = r0 + -37; r6 = r6 & r2; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x486c0; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4d4c0; continue; - case 0x487b0: + case 0x4d5b0: r2 = r0 + 9; r6 = r6 | 64; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r6&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r2; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r6 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x4868c; + /* Next insn is delay slot */ + pc = 0x4d48c; continue; - case 0x48800: - pc=0x48800; + case 0x4d600: + pc = 0x4d600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_48800() throws ExecutionException { /* 0x48800 - 0x48a00 */ + + private final void run_4d600() throws ExecutionException { /* 0x4d600 - 0x4d800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x48800: + for (;;) { + switch (pc) { + case 0x4d600: r2 = r0 + 1; - pc = 0x48804; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + pc = 0x4d604; + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { - pc = 0x48808; + pc = 0x4d608; return; } - case 0x48808: - /* Next insn is delay slot */ - pc=r31; + case 0x4d608: + /* Next insn is delay slot */ + pc = r31; return; - case 0x48810: - r2 = r0 + 2; - pc = 0x48814; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48818; - return; - } - case 0x48818: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48820: + case 0x4d610: r2 = r0 + 3; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x48834; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + pc = 0x4d624; + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { - pc = 0x48838; + pc = 0x4d628; return; } - case 0x48838: + case 0x4d628: r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48850; + r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; + if (r11 != r0) { + /* Next insn is delay slot */ + pc = 0x4d640; continue; } - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x48850: + case 0x4d640: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48860: + /* Next insn is delay slot */ + pc = 0x4d800; + run_4d800(); + return; + case 0x4d650: r2 = r0 + 4; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x48874; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + pc = 0x4d664; + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { - pc = 0x48878; + pc = 0x4d668; return; } - case 0x48878: + case 0x4d668: r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48890; + r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; + if (r11 != r0) { + /* Next insn is delay slot */ + pc = 0x4d680; continue; } - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x48890: + case 0x4d680: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x488a0: + /* Next insn is delay slot */ + pc = 0x4d800; + run_4d800(); + return; + case 0x4d690: r2 = r0 + 5; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x488b4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + pc = 0x4d6a4; + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { - pc = 0x488b8; + pc = 0x4d6a8; return; } - case 0x488b8: + case 0x4d6a8: r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x488d0; + r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; + if (r11 != r0) { + /* Next insn is delay slot */ + pc = 0x4d6c0; continue; } - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x488d0: + case 0x4d6c0: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x488e0: + /* Next insn is delay slot */ + pc = 0x4d800; + run_4d800(); + return; + case 0x4d6d0: r2 = r0 + 6; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x488f4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + pc = 0x4d6e4; + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { - pc = 0x488f8; + pc = 0x4d6e8; return; } - case 0x488f8: + case 0x4d6e8: r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48910; + r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; + if (r11 != r0) { + /* Next insn is delay slot */ + pc = 0x4d700; continue; } - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x48910: + case 0x4d700: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48920: + /* Next insn is delay slot */ + pc = 0x4d800; + run_4d800(); + return; + case 0x4d710: r2 = r0 + 7; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x48934; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + pc = 0x4d724; + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { - pc = 0x48938; + pc = 0x4d728; return; } - case 0x48938: + case 0x4d728: r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48950; + r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; + if (r11 != r0) { + /* Next insn is delay slot */ + pc = 0x4d740; continue; } - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x48950: + case 0x4d740: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48960: + /* Next insn is delay slot */ + pc = 0x4d800; + run_4d800(); + return; + case 0x4d750: r2 = r0 + 8; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x48974; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + pc = 0x4d764; + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { - pc = 0x48978; + pc = 0x4d768; return; } - case 0x48978: + case 0x4d768: r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48990; + r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; + if (r11 != r0) { + /* Next insn is delay slot */ + pc = 0x4d780; continue; } - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x48990: + case 0x4d780: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x489a0: + /* Next insn is delay slot */ + pc = 0x4d800; + run_4d800(); + return; + case 0x4d790: r2 = r0 + 10; r10 = r4 + r0; r4 = r5 + r0; r5 = r6 + r0; r6 = r7 + r0; - pc = 0x489b4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + pc = 0x4d7a4; + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { - pc = 0x489b8; + pc = 0x4d7a8; return; } - case 0x489b8: + case 0x4d7a8: r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x489d0; + r11 = (r11 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; + if (r11 != r0) { + /* Next insn is delay slot */ + pc = 0x4d7c0; continue; } - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x489d0: + case 0x4d7c0: r4 = r10 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x489e0: - r2 = r0 + 11; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x489f4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x489f8; - return; - } - case 0x489f8: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - case 0x48a00: - pc=0x48a00; + /* Next insn is delay slot */ + pc = 0x4d800; + run_4d800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_48a00() throws ExecutionException { /* 0x48a00 - 0x48c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x48a00: - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48a10; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48a10: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48a20: - r2 = r0 + 12; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48a34; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48a38; - return; - } - case 0x48a38: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48a50; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48a50: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48a60: - r2 = r0 + 13; - pc = 0x48a64; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48a68; - return; - } - case 0x48a68: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48a70: - r2 = r0 + 14; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48a84; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48a88; - return; - } - case 0x48a88: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48aa0; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48aa0: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48ab0: - r2 = r0 + 15; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48ac4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48ac8; - return; - } - case 0x48ac8: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48ae0; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48ae0: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48af0: - r2 = r0 + 16; - pc = 0x48af4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48af8; - return; - } - case 0x48af8: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48b00: - r2 = r0 + 17; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48b14; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48b18; - return; - } - case 0x48b18: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48b30; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48b30: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48b40: - r2 = r0 + 18; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48b54; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48b58; - return; - } - case 0x48b58: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48b70; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48b70: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48b80: + case 0x4d7d0: r2 = r0 + 19; - pc = 0x48b84; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + pc = 0x4d7d4; + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { - pc = 0x48b88; + pc = 0x4d7d8; return; } - case 0x48b88: - /* Next insn is delay slot */ - pc=r31; + case 0x4d7d8: + /* Next insn is delay slot */ + pc = r31; return; - case 0x48b90: - r2 = r0 + 20; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48ba4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48ba8; - return; - } - case 0x48ba8: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48bc0; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48bc0: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48bd0: - r2 = r0 + 21; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48be4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48be8; - return; - } - case 0x48be8: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48c00; - run_48c00(); return; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48c00: - pc=0x48c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_48c00() throws ExecutionException { /* 0x48c00 - 0x48e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x48c00: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48c10: - r2 = r0 + 22; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48c24; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48c28; - return; - } - case 0x48c28: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48c40; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48c40: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48c50: - r2 = r0 + 23; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48c64; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48c68; - return; - } - case 0x48c68: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48c80; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48c80: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48c90: - r2 = r0 + 24; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48ca4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48ca8; - return; - } - case 0x48ca8: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48cc0; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48cc0: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48cd0: - r2 = r0 + 25; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48ce4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48ce8; - return; - } - case 0x48ce8: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48d00; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48d00: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48d10: - r2 = r0 + 26; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48d24; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48d28; - return; - } - case 0x48d28: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48d40; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48d40: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48d50: - r2 = r0 + 27; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48d64; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48d68; - return; - } - case 0x48d68: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48d80; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48d80: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48d90: - r2 = r0 + 28; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48da4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48da8; - return; - } - case 0x48da8: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48dc0; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48dc0: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48dd0: - r2 = r0 + 29; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48de4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48de8; - return; - } - case 0x48de8: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48e00; - run_48e00(); return; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48e00: - pc=0x48e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_48e00() throws ExecutionException { /* 0x48e00 - 0x49000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x48e00: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48e10: - r2 = r0 + 30; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48e24; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48e28; - return; - } - case 0x48e28: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48e40; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48e40: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48e50: - r2 = r0 + 31; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48e64; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48e68; - return; - } - case 0x48e68: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48e80; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48e80: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48e90: - r2 = r0 + 32; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48ea4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48ea8; - return; - } - case 0x48ea8: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48ec0; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48ec0: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48ed0: - r2 = r0 + 33; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48ee4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48ee8; - return; - } - case 0x48ee8: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48f00; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48f00: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48f10: - r2 = r0 + 34; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48f24; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48f28; - return; - } - case 0x48f28: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48f40; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48f40: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48f50: - r2 = r0 + 35; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x48f64; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48f68; - return; - } - case 0x48f68: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48f80; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48f80: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48f90: - r2 = r0 + 36; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - pc = 0x48fb0; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x48fb4; - return; - } - case 0x48fb4: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x48fcc; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x48fcc: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x48fdc: + case 0x4d7e0: r2 = r0 + 37; - pc = 0x48fe0; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + pc = 0x4d7e4; + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { - pc = 0x48fe4; + pc = 0x4d7e8; return; } - case 0x48fe4: - /* Next insn is delay slot */ - pc=r31; + case 0x4d7e8: + /* Next insn is delay slot */ + pc = r31; return; - case 0x48fec: + case 0x4d7f0: r2 = r0 + 38; - pc = 0x48ff0; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); + pc = 0x4d7f4; + r2 = syscall(r2, r4, r5, r6, r7, r8, r9); if (state != RUNNING) { - pc = 0x48ff4; + pc = 0x4d7f8; return; } - case 0x48ff4: - /* Next insn is delay slot */ - pc=r31; + case 0x4d7f8: + /* Next insn is delay slot */ + pc = r31; return; - case 0x48ffc: - r2 = r0 + 39; - case 0x49000: - pc=0x49000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_49000() throws ExecutionException { /* 0x49000 - 0x49200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x49000: - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49010; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49014; - return; - } - case 0x49014: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x4902c; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4902c: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x4903c: - r2 = r0 + 40; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49050; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49054; - return; - } - case 0x49054: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x4906c; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4906c: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x4907c: - r2 = r0 + 41; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49090; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49094; - return; - } - case 0x49094: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x490ac; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x490ac: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x490bc: - r2 = r0 + 42; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x490d0; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x490d4; - return; - } - case 0x490d4: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x490ec; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x490ec: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x490fc: - r2 = r0 + 43; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49110; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49114; - return; - } - case 0x49114: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x4912c; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4912c: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x4913c: - r2 = r0 + 44; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49150; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49154; - return; - } - case 0x49154: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x4916c; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4916c: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x4917c: - r2 = r0 + 45; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49190; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49194; - return; - } - case 0x49194: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x491ac; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x491ac: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x491bc: - r2 = r0 + 46; - pc = 0x491c0; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x491c4; - return; - } - case 0x491c4: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x491cc: - r2 = r0 + 47; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x491e0; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x491e4; - return; - } - case 0x491e4: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x491fc; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x491fc: - r4 = r10 + r0; - case 0x49200: - pc=0x49200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_49200() throws ExecutionException { /* 0x49200 - 0x49400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x49200: - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x4920c: - r2 = r0 + 51; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49220; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49224; - return; - } - case 0x49224: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x4923c; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4923c: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x4924c: - r2 = r0 + 52; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49260; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49264; - return; - } - case 0x49264: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x4927c; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4927c: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x4928c: - r2 = r0 + 53; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - pc = 0x492ac; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x492b0; - return; - } - case 0x492b0: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x492c8; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x492c8: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x492d8: - r2 = r0 + 55; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x492ec; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x492f0; - return; - } - case 0x492f0: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49308; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49308: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49318: - r2 = r0 + 54; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x4932c; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49330; - return; - } - case 0x49330: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49348; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49348: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49358: - r2 = r0 + 56; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x4936c; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49370; - return; - } - case 0x49370: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49388; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49388: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49398: - r2 = r0 + 57; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x493ac; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x493b0; - return; - } - case 0x493b0: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x493c8; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x493c8: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x493d8: - r2 = r0 + 58; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x493ec; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x493f0; - return; - } - case 0x493f0: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49408; - run_49400(); return; - } - case 0x49400: - pc=0x49400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_49400() throws ExecutionException { /* 0x49400 - 0x49600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x49400: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49408: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49418: - r2 = r0 + 59; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x4942c; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49430; - return; - } - case 0x49430: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49448; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49448: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49458: - r2 = r0 + 60; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - pc = 0x49478; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x4947c; - return; - } - case 0x4947c: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49494; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49494: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x494a4: - r2 = r0 + 61; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - pc = 0x494c4; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x494c8; - return; - } - case 0x494c8: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x494e0; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x494e0: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x494f0: - r2 = r0 + 62; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49504; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49508; - return; - } - case 0x49508: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49520; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49520: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49530: - r2 = r0 + 63; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49544; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49548; - return; - } - case 0x49548: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49560; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49560: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49570: - r2 = r0 + 64; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49584; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49588; - return; - } - case 0x49588: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x495a0; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x495a0: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x495b0: - r2 = r0 + 65; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - pc = 0x495d0; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x495d4; - return; - } - case 0x495d4: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x495ec; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x495ec: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x495fc: - r2 = r0 + 66; - case 0x49600: - pc=0x49600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_49600() throws ExecutionException { /* 0x49600 - 0x49800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x49600: - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - pc = 0x4961c; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49620; - return; - } - case 0x49620: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49638; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49638: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49648: - r2 = r0 + 67; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r8 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r9 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - pc = 0x49668; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x4966c; - return; - } - case 0x4966c: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49684; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49684: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49694: - r2 = r0 + 73; - pc = 0x49698; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x4969c; - return; - } - case 0x4969c: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x496a4: - r2 = r0 + 68; - pc = 0x496a8; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x496ac; - return; - } - case 0x496ac: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x496b4: - r2 = r0 + 70; - pc = 0x496b8; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x496bc; - return; - } - case 0x496bc: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x496c4: - r2 = r0 + 69; - pc = 0x496c8; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x496cc; - return; - } - case 0x496cc: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x496d4: - r2 = r0 + 71; - pc = 0x496d8; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x496dc; - return; - } - case 0x496dc: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x496e4: - r2 = r0 + 82; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x496f8; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x496fc; - return; - } - case 0x496fc: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49714; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49714: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49724: - r2 = r0 + 83; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49738; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x4973c; - return; - } - case 0x4973c: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49754; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49754: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49764: - r2 = r0 + 84; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49778; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x4977c; - return; - } - case 0x4977c: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49794; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49794: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x497a4: - r2 = r0 + 85; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x497b8; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x497bc; - return; - } - case 0x497bc: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x497d4; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x497d4: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x497e4: - r2 = r0 + 80; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x497f8; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x497fc; - return; - } - case 0x497fc: - r11 = r2 + 255; - case 0x49800: - pc=0x49800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_49800() throws ExecutionException { /* 0x49800 - 0x49a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x49800: - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49814; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49814: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49824: - r2 = r0 + 86; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49838; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x4983c; - return; - } - case 0x4983c: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49854; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49854: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49864: - r2 = r0 + 81; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49878; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x4987c; - return; - } - case 0x4987c: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49894; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49894: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x498a4: - r2 = r0 + 87; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x498b8; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x498bc; - return; - } - case 0x498bc: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x498d4; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x498d4: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x498e4: - r2 = r0 + 88; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x498f8; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x498fc; - return; - } - case 0x498fc: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49914; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49914: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49924: - r2 = r0 + 78; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49938; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x4993c; - return; - } - case 0x4993c: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49954; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49954: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49964: - r2 = r0 + 76; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49978; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x4997c; - return; - } - case 0x4997c: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49994; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49994: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x499a4: - r2 = r0 + 77; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x499b8; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x499bc; - return; - } - case 0x499bc: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x499d4; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x499d4: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x499e4: - r2 = r0 + 74; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x499f8; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x499fc; - return; - } - case 0x499fc: - r11 = r2 + 255; - case 0x49a00: - pc=0x49a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_49a00() throws ExecutionException { /* 0x49a00 - 0x49c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x49a00: - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49a14; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49a14: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49a24: - r2 = r0 + 75; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49a38; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49a3c; - return; - } - case 0x49a3c: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49a54; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49a54: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49a64: - r2 = r0 + 79; - pc = 0x49a68; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49a6c; - return; - } - case 0x49a6c: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49a74: - r2 = r0 + 72; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49a88; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49a8c; - return; - } - case 0x49a8c: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49aa4; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49aa4: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49ab4: - r2 = r0 + 90; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49ac8; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49acc; - return; - } - case 0x49acc: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49ae4; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49ae4: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49af4: - r2 = r0 + 89; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49b08; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49b0c; - return; - } - case 0x49b0c: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49b24; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49b24: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49b34: - r2 = r0 + 91; - r10 = r4 + r0; - r4 = r5 + r0; - r5 = r6 + r0; - r6 = r7 + r0; - pc = 0x49b48; - r2 = syscall(r2,r4,r5,r6,r7,r8,r9); - if (state != RUNNING) { - pc = 0x49b4c; - return; - } - case 0x49b4c: - r11 = r2 + 255; - r11 = (r11&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x49b64; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49b64: - r4 = r10 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49c00; - run_49c00(); return; - case 0x49c00: - pc=0x49c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_49c00() throws ExecutionException { /* 0x49c00 - 0x49e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x49c00: - r5 = r0 - r5; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x49e00: - pc=0x49e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_49e00() throws ExecutionException { /* 0x49e00 - 0x4a000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x49e00: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x48b40; - run_48a00(); return; - case 0x4a000: - pc=0x4a000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4a000() throws ExecutionException { /* 0x4a000 - 0x4a200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4a000: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49924; - run_49800(); return; - case 0x4a200: - pc=0x4a200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4a200() throws ExecutionException { /* 0x4a200 - 0x4a400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4a200: - r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x48e10; - run_48e00(); return; - case 0x4a400: - pc=0x4a400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4a400() throws ExecutionException { /* 0x4a400 - 0x4a600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4a400: - r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x48e50; - run_48e00(); return; - case 0x4a600: - pc=0x4a600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4a600() throws ExecutionException { /* 0x4a600 - 0x4a800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4a600: - r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x48c10; - run_48c00(); return; - case 0x4a800: - pc=0x4a800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4a800() throws ExecutionException { /* 0x4a800 - 0x4aa00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4a800: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x48bd0; - run_48a00(); return; - case 0x4aa00: - pc=0x4aa00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4aa00() throws ExecutionException { /* 0x4aa00 - 0x4ac00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4aa00: - r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x48c50; - run_48c00(); return; - case 0x4ac00: - pc=0x4ac00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4ac00() throws ExecutionException { /* 0x4ac00 - 0x4ae00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4ac00: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x48c90; - run_48c00(); return; - case 0x4ae00: - pc=0x4ae00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4ae00() throws ExecutionException { /* 0x4ae00 - 0x4b000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4ae00: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x48d10; - run_48c00(); return; - case 0x4b000: - pc=0x4b000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4b000() throws ExecutionException { /* 0x4b000 - 0x4b200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4b000: - r29 = r29 + -40; - r2 = r4 + r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r18 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x4b070; - continue; - } - r6 = r5 + r0; - r4 = r18 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - r31=0x4b040; - pc=0x48d50; - run_48c00(); return; - case 0x4b040: - r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x4b0c4; - continue; - } - case 0x4b04c: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4b070: - r16 = r0 + 256; - r19 = r0 + -1; - r20 = r0 + 34; - case 0x4b07c: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x4b088; - pc=0x3e800; - run_3e800(); return; - case 0x4b088: - r5 = r2 + r0; - r4 = r18 + r0; - r6 = r16 + r0; - r17 = r2 + r0; - /* Next insn is delay slot */ - r31=0x4b0a0; - pc=0x48d50; - run_48c00(); return; - case 0x4b0a0: - if(r2 != r19) { - /* Next insn is delay slot */ - pc=0x4b04c; - continue; - } - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x4b0b4; - pc=0x3ea00; - run_3ea00(); return; - case 0x4b0b4: - r2 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; - r16 = r16 << 1; - if(r2 == r20) { - /* Next insn is delay slot */ - pc=0x4b07c; - continue; - } - case 0x4b0c4: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4b200: - pc=0x4b200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4b200() throws ExecutionException { /* 0x4b200 - 0x4b400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4b200: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x48d50; - run_48c00(); return; - case 0x4b400: - pc=0x4b400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4b400() throws ExecutionException { /* 0x4b400 - 0x4b600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4b400: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x48f10; - run_48e00(); return; - case 0x4b600: - pc=0x4b600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4b600() throws ExecutionException { /* 0x4b600 - 0x4b800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4b600: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x48e90; - run_48e00(); return; - case 0x4b800: - pc=0x4b800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4b800() throws ExecutionException { /* 0x4b800 - 0x4ba00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4b800: - r3 = r4 + r0; - r2 = r5 & 65535; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 & 65535; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49964; - run_49800(); return; - case 0x4ba00: - pc=0x4ba00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4ba00() throws ExecutionException { /* 0x4ba00 - 0x4bc00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4ba00: - r3 = r4 + r0; - r2 = r5 & 65535; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 & 65535; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x499a4; - run_49800(); return; - case 0x4bc00: - pc=0x4bc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4bc00() throws ExecutionException { /* 0x4bc00 - 0x4be00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4bc00: - r3 = r4 + r0; - r2 = r5 & 65535; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 & 65535; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x490fc; - run_49000(); return; - case 0x4be00: - pc=0x4be00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4be00() throws ExecutionException { /* 0x4be00 - 0x4c000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4be00: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x499e4; - run_49800(); return; - case 0x4c000: - pc=0x4c000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4c000() throws ExecutionException { /* 0x4c000 - 0x4c200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4c000: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49a24; - run_49a00(); return; - case 0x4c200: - pc=0x4c200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4c200() throws ExecutionException { /* 0x4c200 - 0x4c400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4c200: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x48ed0; - run_48e00(); return; - case 0x4c400: - pc=0x4c400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4c400() throws ExecutionException { /* 0x4c400 - 0x4c600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4c400: - r29 = r29 + -32; - r8 = r4 + r0; - r3 = r5 + r0; - r2 = r6 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r8 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - r6 = r3 + r0; - r7 = r2 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x4c430; - pc=0x48f90; - run_48e00(); return; - case 0x4c430: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4c600: - pc=0x4c600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4c600() throws ExecutionException { /* 0x4c600 - 0x4c800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4c600: - r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x48ffc; - run_48e00(); return; - case 0x4c800: - pc=0x4c800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4c800() throws ExecutionException { /* 0x4c800 - 0x4ca00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4c800: - r29 = r29 + -24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r16 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r5 = 7 << 16; - r5 = r5 + 1056; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x4c828; - pc=0x3bc00; - run_3bc00(); return; - case 0x4c828: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 22; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r0 + -1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4ca00: - pc=0x4ca00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4ca00() throws ExecutionException { /* 0x4ca00 - 0x4cc00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4ca00: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x4903c; - run_49000(); return; - case 0x4cc00: - pc=0x4cc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4cc00() throws ExecutionException { /* 0x4cc00 - 0x4ce00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4cc00: - r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x4907c; - run_49000(); return; - case 0x4ce00: - pc=0x4ce00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4ce00() throws ExecutionException { /* 0x4ce00 - 0x4d000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4ce00: - r3 = r4 + r0; - r2 = r5 + r0; - r7 = r6 << 16; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r7 >> 16; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x490bc; - run_49000(); return; - case 0x4d000: - pc=0x4d000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4d000() throws ExecutionException { /* 0x4d000 - 0x4d200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4d000: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x4913c; - run_49000(); return; - case 0x4d200: - pc=0x4d200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4d200() throws ExecutionException { /* 0x4d200 - 0x4d400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4d200: - r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x4917c; - run_49000(); return; - case 0x4d400: - pc=0x4d400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4d400() throws ExecutionException { /* 0x4d400 - 0x4d600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4d400: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x491cc; - run_49000(); return; - case 0x4d600: - pc=0x4d600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4d600() throws ExecutionException { /* 0x4d600 - 0x4d800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4d600: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x4920c; - run_49200(); return; case 0x4d800: - pc=0x4d800; + pc = 0x4d800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_4d800() throws ExecutionException { /* 0x4d800 - 0x4da00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x4d800: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x4924c; - run_49200(); return; - case 0x4da00: - pc=0x4da00; + r5 = r0 - r5; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r5; + r2 = r0 + -1; + /* Next insn is delay slot */ + pc = r31; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4da00: + pc = 0x4da00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_4da00() throws ExecutionException { /* 0x4da00 - 0x4dc00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x4da00: - r29 = r29 + -40; - r8 = r4 + r0; - r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r3 = r5 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r4; - r4 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r2 = r6 + r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - r5 = r8 + r0; - r6 = r3 + r0; - r7 = r2 + r0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x4da40; - pc=0x4928c; - run_49200(); return; - case 0x4da40: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + r4 = r5 + r0; + /* Next insn is delay slot */ + pc = 0x50c00; + run_50c00(); return; case 0x4dc00: - pc=0x4dc00; + pc = 0x4dc00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } + private final void run_4dc00() throws ExecutionException { /* 0x4dc00 - 0x4de00 */ int addr, tmp; - for(;;) { - switch(pc) { + for (;;) { + switch (pc) { case 0x4dc00: - r2 = r4 + r0; - r4 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r29 = r29 + -40; - r3 = r0 + 8; - r8 = r5 + r0; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - r16 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x4dc64; - continue; - } - r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x4dca8; - continue; - } - r3 = r0 + 2; - if(r5 == r3) { - /* Next insn is delay slot */ - pc=0x4dcc8; - continue; - } - case 0x4dc44: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r2 = r0 + 22; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r2 = r0 + -1; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4dc64: - r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r9 = r6 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r3; - r4 = r16 + r0; - r5 = r2 + r0; - r6 = r8 + r0; - r7 = r9 + r0; - /* Next insn is delay slot */ - r31=0x4dc94; - pc=0x4928c; - run_49200(); return; - case 0x4dc94: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4dca8: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r2 = r0 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r2 = r0 + -1; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4dcc8: - r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r5 = 7 << 16; - r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = r5 + 1096; - /* Next insn is delay slot */ - r31=0x4dce0; - pc=0x3bc00; - run_3bc00(); return; - case 0x4dce0: - /* Next insn is delay slot */ - pc=0x4dc44; - continue; - case 0x4de00: - pc=0x4de00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4de00() throws ExecutionException { /* 0x4de00 - 0x4e000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4de00: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x492d8; - run_49200(); return; - case 0x4e000: - pc=0x4e000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4e000() throws ExecutionException { /* 0x4e000 - 0x4e200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4e000: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49318; - run_49200(); return; - case 0x4e200: - pc=0x4e200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4e200() throws ExecutionException { /* 0x4e200 - 0x4e400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4e200: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49398; - run_49200(); return; - case 0x4e400: - pc=0x4e400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4e400() throws ExecutionException { /* 0x4e400 - 0x4e600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4e400: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49358; - run_49200(); return; - case 0x4e600: - pc=0x4e600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4e600() throws ExecutionException { /* 0x4e600 - 0x4e800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4e600: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x493d8; - run_49200(); return; - case 0x4e800: - pc=0x4e800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4e800() throws ExecutionException { /* 0x4e800 - 0x4ea00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4e800: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49af4; - run_49a00(); return; - case 0x4ea00: - pc=0x4ea00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4ea00() throws ExecutionException { /* 0x4ea00 - 0x4ec00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4ea00: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49418; - run_49400(); return; - case 0x4ec00: - pc=0x4ec00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4ec00() throws ExecutionException { /* 0x4ec00 - 0x4ee00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4ec00: - r29 = r29 + -32; - r8 = r4 + r0; - r4 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r3 = r5 + r0; - r2 = r6 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - r5 = r8 + r0; - r6 = r3 + r0; - r7 = r2 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x4ec38; - pc=0x494a4; - run_49400(); return; - case 0x4ec38: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4ee00: - pc=0x4ee00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4ee00() throws ExecutionException { /* 0x4ee00 - 0x4f000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4ee00: - r29 = r29 + -32; - r8 = r4 + r0; - r4 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r3 = r5 + r0; - r2 = r6 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - r5 = r8 + r0; - r6 = r3 + r0; - r7 = r2 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x4ee38; - pc=0x49458; - run_49400(); return; - case 0x4ee38: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4f000: - pc=0x4f000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4f000() throws ExecutionException { /* 0x4f000 - 0x4f200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4f000: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49530; - run_49400(); return; - case 0x4f200: - pc=0x4f200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4f200() throws ExecutionException { /* 0x4f200 - 0x4f400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4f200: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x494f0; - run_49400(); return; - case 0x4f400: - pc=0x4f400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4f400() throws ExecutionException { /* 0x4f400 - 0x4f600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4f400: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49570; - run_49400(); return; - case 0x4f600: - pc=0x4f600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4f600() throws ExecutionException { /* 0x4f600 - 0x4f800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4f600: - r29 = r29 + -40; - r8 = r4 + r0; - r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r3 = r5 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r4; - r4 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r2 = r6 + r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - r5 = r8 + r0; - r6 = r3 + r0; - r7 = r2 + r0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x4f640; - pc=0x495b0; - run_49400(); return; - case 0x4f640: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4f800: - pc=0x4f800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4f800() throws ExecutionException { /* 0x4f800 - 0x4fa00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4f800: - r29 = r29 + -40; - r8 = r4 + r0; - r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r3 = r5 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r4; - r4 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r2 = r6 + r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - r5 = r8 + r0; - r6 = r3 + r0; - r7 = r2 + r0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x4f840; - pc=0x495fc; - run_49400(); return; - case 0x4f840: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4fa00: - pc=0x4fa00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4fa00() throws ExecutionException { /* 0x4fa00 - 0x4fc00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4fa00: - r29 = r29 + -32; - r8 = r4 + r0; - r4 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r3 = r5 + r0; - r2 = r6 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - r5 = r8 + r0; - r6 = r3 + r0; - r7 = r2 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x4fa38; - pc=0x49648; - run_49600(); return; - case 0x4fa38: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4fc00: - pc=0x4fc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4fc00() throws ExecutionException { /* 0x4fc00 - 0x4fe00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4fc00: - r29 = r29 + -32; - r8 = r4 + r0; - r3 = r5 + r0; - r2 = r6 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r8 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - r6 = r3 + r0; - r7 = r2 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x4fc30; - pc=0x496e4; - run_49600(); return; - case 0x4fc30: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x4fe00: - pc=0x4fe00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_4fe00() throws ExecutionException { /* 0x4fe00 - 0x50000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x4fe00: - r29 = r29 + -32; - r8 = r4 + r0; - r3 = r5 + r0; - r2 = r6 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r8 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - r6 = r3 + r0; - r7 = r2 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x4fe30; - pc=0x49724; - run_49600(); return; - case 0x4fe30: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x50000: - pc=0x50000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_50000() throws ExecutionException { /* 0x50000 - 0x50200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x50000: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49a74; - run_49a00(); return; - case 0x50200: - pc=0x50200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_50200() throws ExecutionException { /* 0x50200 - 0x50400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x50200: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x49764; - run_49600(); return; - case 0x50400: - pc=0x50400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_50400() throws ExecutionException { /* 0x50400 - 0x50600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x50400: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x497a4; - run_49600(); return; - case 0x50600: - pc=0x50600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_50600() throws ExecutionException { /* 0x50600 - 0x50800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x50600: - r5 = r4 & 65535; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x497e4; - run_49600(); return; - case 0x50800: - pc=0x50800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_50800() throws ExecutionException { /* 0x50800 - 0x50a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x50800: - r5 = r4 & 65535; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x49824; - run_49800(); return; - case 0x50a00: - pc=0x50a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_50a00() throws ExecutionException { /* 0x50a00 - 0x50c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x50a00: - r5 = r4 & 65535; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x49864; - run_49800(); return; - case 0x50c00: - pc=0x50c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_50c00() throws ExecutionException { /* 0x50c00 - 0x50e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x50c00: - r5 = r4 & 65535; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x498a4; - run_49800(); return; - case 0x50e00: - pc=0x50e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_50e00() throws ExecutionException { /* 0x50e00 - 0x51000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x50e00: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x498e4; - run_49800(); return; - case 0x51000: - pc=0x51000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_51000() throws ExecutionException { /* 0x51000 - 0x51200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x51000: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x49ab4; - run_49a00(); return; - case 0x51200: - pc=0x51200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_51200() throws ExecutionException { /* 0x51200 - 0x51400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x51200: - r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x49b34; - run_49a00(); return; - case 0x51400: - pc=0x51400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_51400() throws ExecutionException { /* 0x51400 - 0x51600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x51400: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x48d90; - run_48c00(); return; - case 0x51600: - pc=0x51600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_51600() throws ExecutionException { /* 0x51600 - 0x51800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x51600: - r29 = r29 + -40; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x5165c; - continue; - } - /* Next insn is delay slot */ - r31=0x5162c; - pc=0x48d50; - run_48c00(); return; - case 0x5162c: - r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x516b4; - continue; - } - case 0x51638: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5165c: - r18 = r4 + r0; - r16 = r0 + 256; - r19 = r0 + -1; - r20 = r0 + 34; - case 0x5166c: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x51678; - pc=0x3e800; - run_3e800(); return; - case 0x51678: - r5 = r2 + r0; - r4 = r18 + r0; - r6 = r16 + r0; - r17 = r2 + r0; - /* Next insn is delay slot */ - r31=0x51690; - pc=0x48d50; - run_48c00(); return; - case 0x51690: - if(r2 != r19) { - /* Next insn is delay slot */ - pc=0x51638; - continue; - } - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x516a4; - pc=0x3ea00; - run_3ea00(); return; - case 0x516a4: - r2 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; - r16 = r16 << 1; - if(r2 == r20) { - /* Next insn is delay slot */ - pc=0x5166c; - continue; - } - case 0x516b4: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x51800: - pc=0x51800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_51800() throws ExecutionException { /* 0x51800 - 0x51a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x51800: - r6 = r5 + r0; - r7 = r0 + r0; - r5 = r0 + -1; - /* Next insn is delay slot */ - pc=0x48d10; - run_48c00(); return; - case 0x51a00: - pc=0x51a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_51a00() throws ExecutionException { /* 0x51a00 - 0x51c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x51a00: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r29 = r29 + -24; - r5 = 7 << 16; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r16 = r4 + r0; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r5 = r5 + 1056; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x51a28; - pc=0x3bc00; - run_3bc00(); return; - case 0x51a28: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 22; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r0 + -1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x51c00: - pc=0x51c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_51c00() throws ExecutionException { /* 0x51c00 - 0x51e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x51c00: - r8 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r29 = r29 + -24; - r3 = r0 + 8; - r2 = r5 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r9 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - if(r8 != r3) { - /* Next insn is delay slot */ - pc=0x51c5c; - continue; - } - r16 = r4 + r0; - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x51c74; - continue; - } - r3 = r0 + 2; - if(r6 == r3) { - /* Next insn is delay slot */ - pc=0x51c94; - continue; - } - case 0x51c3c: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 22; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r0 + -1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x51c5c: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=0x4928c; - run_49200(); return; - case 0x51c74: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 1; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r0 + -1; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x51c94: - r3 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = 7 << 16; - r4 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = r5 + 1096; - /* Next insn is delay slot */ - r31=0x51cb0; - pc=0x3bc00; - run_3bc00(); return; - case 0x51cb0: - /* Next insn is delay slot */ - pc=0x51c3c; - continue; - case 0x51e00: - pc=0x51e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_51e00() throws ExecutionException { /* 0x51e00 - 0x52000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x51e00: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x52000: - pc=0x52000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_52000() throws ExecutionException { /* 0x52000 - 0x52200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x52000: - r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x52010; - pc=0x5a200; - run_5a200(); return; - case 0x52010: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x52030; - continue; - } - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = 7 << 16; - r2 = r2 + 1132; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x52030: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x52200: - pc=0x52200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_52200() throws ExecutionException { /* 0x52200 - 0x52400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x52200: - r29 = r29 + -32; - r2 = r5 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - r16 = r6 + r0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x522b8; - continue; - } - r3 = readPages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x52288; - continue; - } - r5 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; - r3 = r0 + -1; - if(r5 != r3) { - /* Next insn is delay slot */ - pc=0x52288; - continue; - } - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x52250; - pc=0x5ea00; - run_5ea00(); return; - case 0x52250: - r17 = r2 + r0; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x52268; - continue; - } - case 0x5225c: - r2 = r0 + -1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r17; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - case 0x52268: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x52288: - /* Next insn is delay slot */ - r31=0x52290; - pc=0x38c00; - run_38c00(); return; - case 0x52290: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r3 = r0 + 22; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r0 + -1; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x522b8: - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x52268; - continue; - } - r18 = r4 + r0; - /* Next insn is delay slot */ - r31=0x522cc; - pc=0x5ea00; - run_5ea00(); return; - case 0x522cc: - r5 = r2 + r0; - r4 = r18 + r0; - r17 = r2 + r0; - /* Next insn is delay slot */ - r31=0x522e0; - pc=0x5ea00; - run_5ea00(); return; - case 0x522e0: - /* Next insn is delay slot */ - pc=0x5225c; - continue; - case 0x52400: - pc=0x52400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_52400() throws ExecutionException { /* 0x52400 - 0x52600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x52400: - r29 = r29 + -96; - r5 = r0 + r0; - writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r17; - writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r31; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x5241c; - pc=0x63000; - run_63000(); return; - case 0x5241c: - r17 = r2 + r0; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x524ec; - continue; - } - r4 = r2 + r0; - r5 = r29 + 16; - /* Next insn is delay slot */ - r31=0x52438; - pc=0x62e00; - run_62e00(); return; - case 0x52438: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x524b4; - continue; - } - r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r2 = r0 + 16384; - r3 = r3 & 61440; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x524b4; - continue; - } - r4 = r0 + 20; - /* Next insn is delay slot */ - r31=0x52460; - pc=0x3e800; - run_3e800(); return; - case 0x52460: - r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x524f8; - continue; - } - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r17; - r4 = r0 + 4096; - /* Next insn is delay slot */ - r31=0x5247c; - pc=0x3e800; - run_3e800(); return; - case 0x5247c: - r3 = r0 + 4096; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r3; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x52520; - continue; - } - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; - r2 = r16 + r0; - case 0x5249c: - r31 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r17 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r16 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r29 = r29 + 96; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x524b4: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x524c0; - pc=0x62a00; - run_62a00(); return; - case 0x524c0: - /* Next insn is delay slot */ - r31=0x524c8; - pc=0x38c00; - run_38c00(); return; - case 0x524c8: - r31 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r3 = r0 + 20; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r17 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r16 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 96; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x524ec: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5249c; - continue; - case 0x524f8: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x52504; - pc=0x62a00; - run_62a00(); return; - case 0x52504: - /* Next insn is delay slot */ - r31=0x5250c; - pc=0x38c00; - run_38c00(); return; - case 0x5250c: - r3 = r0 + 12; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5249c; - continue; - case 0x52520: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x5252c; - pc=0x62a00; - run_62a00(); return; - case 0x5252c: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x52538; - pc=0x3ea00; - run_3ea00(); return; - case 0x52538: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5249c; - continue; - case 0x52600: - pc=0x52600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_52600() throws ExecutionException { /* 0x52600 - 0x52800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x52600: - r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - r16 = r4 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x52618; - pc=0x38c00; - run_38c00(); return; - case 0x52618: - r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x52684; - continue; - } - r5 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - if(r3 == r5) { - /* Next insn is delay slot */ - pc=0x52684; - continue; - } - r6 = r3 + r0; - case 0x5263c: - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = r2 + r6; - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x526c4; - continue; - } - r3 = r5 - r3; - r3 = ((r3 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x526c4; - continue; - } - r4 = r6 + r4; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r4; - case 0x52670: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x52684: - r5 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r6 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r7 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x526a0; - pc=0x48f90; - run_48e00(); return; - case 0x526a0: - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r2; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x526dc; - continue; - } - r5 = r2 + r0; - r6 = r0 + r0; - r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5263c; - continue; - case 0x526c4: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x526dc: - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x52670; - continue; - case 0x52800: - pc=0x52800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_52800() throws ExecutionException { /* 0x52800 - 0x52a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x52800: - r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r17 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r16 = r4 + r0; - r4 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x52824; - pc=0x3ea00; - run_3ea00(); return; - case 0x52824: - r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x52830; - pc=0x3ea00; - run_3ea00(); return; - case 0x52830: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = r17 + r0; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x62a00; - run_62a00(); return; - case 0x52a00: - pc=0x52a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_52a00() throws ExecutionException { /* 0x52a00 - 0x52c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x52a00: - r2 = r4 >>> 16; - r29 = r29 + -40; - r2 = r2 & 255; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r2 = r4 >>> 8; - r2 = r2 & 255; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - r16 = 7 << 16; - r2 = r4 & 255; - r7 = r4 + r0; - r6 = 7 << 16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - r4 = r16 + 23428; - r5 = r0 + 18; - r6 = r6 + 1148; - r7 = r7 >>> 24; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x52a50; - pc=0x41c00; - run_41c00(); return; - case 0x52a50: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r2 = r16 + 23428; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x52c00: - pc=0x52c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_52c00() throws ExecutionException { /* 0x52c00 - 0x52e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x52c00: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x52e00: - pc=0x52e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_52e00() throws ExecutionException { /* 0x52e00 - 0x53000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x52e00: - r2 = (r4&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x52e28; - continue; - } - r2 = 7 << 16; - r2 = r2 + 1396; - r4 = r4 << 2; - r4 = r4 + r2; - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x52e28: - r2 = 7 << 16; - r2 = r2 + 1160; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x53000: - pc=0x53000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_53000() throws ExecutionException { /* 0x53000 - 0x53200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x53000: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r4 + r0; - r4 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r2 = readPages[(r28+-30568)>>>12][((r28+-30568)>>>2)&0x3ff]; - r3 = (r2&0xffffffffL) < (5&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x53044; - continue; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + 1396; - r2 = r2 + r3; - r5 = 7 << 16; - r7 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r5 = r5 + 1176; - /* Next insn is delay slot */ - pc=0x3bc00; - run_3bc00(); return; - case 0x53044: - r7 = 7 << 16; - r5 = 7 << 16; - r7 = r7 + 1160; - r5 = r5 + 1176; - /* Next insn is delay slot */ - pc=0x3bc00; - run_3bc00(); return; - case 0x53200: - pc=0x53200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_53200() throws ExecutionException { /* 0x53200 - 0x53400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x53200: - r29 = r29 + -40; - r2 = r0 + 2; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - r16 = r6 + r0; - if(r6 != r2) { - /* Next insn is delay slot */ - pc=0x532d4; - continue; - } - r2 = r0 + 4; - r17 = r5 + r0; - if(r5 != r2) { - /* Next insn is delay slot */ - pc=0x532d4; - continue; - } - r18 = r4 + r0; - r5 = r18 + r0; - r4 = r29 + 16; - r6 = r0 + 4; - /* Next insn is delay slot */ - r31=0x5324c; - pc=0x48fdc; - run_48e00(); return; - case 0x5324c: - r5 = r18 + r0; - r4 = r28 + -30624; - r6 = r0 + 4; - /* Next insn is delay slot */ - r31=0x53260; - pc=0x48fdc; - run_48e00(); return; - case 0x53260: - r18 = 7 << 16; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r6 = r18 + 23300; - r7 = r0 + 128; - /* Next insn is delay slot */ - r31=0x5327c; - pc=0x49af4; - run_49a00(); return; - case 0x5327c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x532f4; - continue; - } - r2 = 7 << 16; - r18 = r18 + 23300; - writePages[(r2+23280)>>>12][((r2+23280)>>>2)&0x3ff] = r18; - r3 = r28 + -30628; - r2 = r2 + 23280; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r3 = r28 + -30632; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; - r3 = r28 + -30624; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r16; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r17; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - writePages[(r28+-30628)>>>12][((r28+-30628)>>>2)&0x3ff] = r0; - writePages[(r28+-30632)>>>12][((r28+-30632)>>>2)&0x3ff] = r3; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x532d4: - r2 = r0 + r0; - case 0x532d8: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x532f4: - writePages[(r28+-30568)>>>12][((r28+-30568)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x532d8; - continue; - case 0x53400: - pc=0x53400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_53400() throws ExecutionException { /* 0x53400 - 0x53600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x53400: - r29 = r29 + -1064; - writePages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff] = r18; - r18 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r2 = r0 + 1024; - r5 = r18 + r0; - r6 = r29 + 16; - r7 = r29 + 1040; - writePages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff] = r31; - writePages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff] = r17; - writePages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff] = r16; - writePages[(r29+1040)>>>12][((r29+1040)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x53438; - pc=0x493d8; - run_49200(); return; - case 0x53438: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5351c; - continue; - } - r17 = readPages[(r29+1040)>>>12][((r29+1040)>>>2)&0x3ff]; - r9 = 7 << 16; - r9 = r9 + 22256; - r4 = r9 + r0; - r5 = r29 + 16; - r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x53460; - pc=0x48fdc; - run_48e00(); return; - case 0x53460: - r9 = r2 + r0; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x53540; - continue; - } - r16 = 7 << 16; - r3 = r0 + r0; - r7 = r0 + r0; - r2 = r0 + r0; - r16 = r16 + 21228; - /* Next insn is delay slot */ - pc=0x5348c; - continue; - case 0x53488: - r3 = r2 + r0; - case 0x5348c: - r8 = r16 + r3; - r2 = r9 + r2; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r2; - r2 = r3 + 4; - r3 = ((r2 & 0xffffffffL) < (r17 & 0xffffffffL)) ? 1 : 0; - r7 = r7 + 1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x53488; - continue; - } - case 0x534ac: - r2 = r7 << 2; - r17 = 7 << 16; - r2 = r16 + r2; - r4 = r17 + 21100; - r5 = r18 + r0; - r6 = r0 + 128; - r17 = r17 + 21100; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x534d4; - pc=0x5f400; - run_5f400(); return; - case 0x534d4: - r2 = 7 << 16; - writePages[(r2+21080)>>>12][((r2+21080)>>>2)&0x3ff] = r17; - r3 = r28 + -30636; - r2 = r2 + 21080; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r3; - r31 = readPages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff]; - r3 = r0 + 2; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r3; - r3 = r0 + 4; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; - r18 = readPages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff]; - r17 = readPages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff]; - r16 = readPages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff]; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - writePages[(r28+-30636)>>>12][((r28+-30636)>>>2)&0x3ff] = r0; - r29 = r29 + 1064; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5351c: - r31 = readPages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff]; - r18 = readPages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff]; - r17 = readPages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff]; - r16 = readPages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff]; - writePages[(r28+-30568)>>>12][((r28+-30568)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - r29 = r29 + 1064; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x53540: - r16 = 7 << 16; - r7 = r0 + r0; - r16 = r16 + 21228; - /* Next insn is delay slot */ - pc=0x534ac; - continue; - case 0x53600: - pc=0x53600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_53600() throws ExecutionException { /* 0x53600 - 0x53800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x53600: - r29 = r29 + -1088; - r5 = 7 << 16; - writePages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff] = r30; - r30 = r4 + r0; - r4 = 7 << 16; - r4 = r4 + 1184; - r5 = r5 + -632; - writePages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff] = r17; - writePages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff] = r31; - writePages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff] = r23; - writePages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff] = r22; - writePages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff] = r21; - writePages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff] = r20; - writePages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff] = r19; - writePages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff] = r18; - writePages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x53648; - pc=0x3b800; - run_3b800(); return; - case 0x53648: - r17 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x53728; - continue; - } - r21 = 7 << 16; - r22 = 7 << 16; - r21 = r21 + 24472; - r23 = 7 << 16; - r22 = r22 + 1196; - r18 = 7 << 16; - r20 = 7 << 16; - r19 = r21 + r0; - case 0x53674: - r16 = r0 + 35; - case 0x53678: - r4 = r29 + 24; - r5 = r0 + 1024; - r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x5368c; - pc=0x59400; - run_59400(); return; - case 0x5368c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5371c; - continue; - } - addr=r29+24; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x53678; - continue; - } - r2 = r23 + 30624; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r4 = r29 + 24; - r5 = r22 + r0; - r6 = r21 + r0; - r7 = r18 + 23448; - /* Next insn is delay slot */ - r31=0x536c4; - pc=0x5f000; - run_5f000(); return; - case 0x536c4: - r2 = r2 < 3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5371c; - continue; - } - r16 = r20 + 30616; - r2 = r18 + 23448; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - r4 = r30 + r0; - r2 = r28 + -30620; - r5 = r19 + r0; - writePages[(r20+30616)>>>12][((r20+30616)>>>2)&0x3ff] = r19; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; - writePages[(r28+-30620)>>>12][((r28+-30620)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x536fc; - pc=0x42c00; - run_42c00(); return; - case 0x536fc: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x53674; - continue; - } - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x53710; - pc=0x39200; - run_39200(); return; - case 0x53710: - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x5372c; - continue; - case 0x5371c: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x53728; - pc=0x39200; - run_39200(); return; - case 0x53728: - r2 = r0 + r0; - case 0x5372c: - r31 = readPages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff]; - r30 = readPages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff]; - r23 = readPages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff]; - r22 = readPages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff]; - r21 = readPages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff]; - r20 = readPages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff]; - r19 = readPages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff]; - r18 = readPages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff]; - r17 = readPages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff]; - r16 = readPages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff]; - r29 = r29 + 1088; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x53800: - pc=0x53800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_53800() throws ExecutionException { /* 0x53800 - 0x53a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x53800: - r29 = r29 + -1088; - r5 = 7 << 16; - writePages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff] = r23; - r23 = r4 & 65535; - r4 = 7 << 16; - r4 = r4 + 1184; - r5 = r5 + -632; - writePages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff] = r17; - writePages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff] = r31; - writePages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff] = r30; - writePages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff] = r22; - writePages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff] = r21; - writePages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff] = r20; - writePages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff] = r19; - writePages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff] = r18; - writePages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x53848; - pc=0x3b800; - run_3b800(); return; - case 0x53848: - r17 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5391c; - continue; - } - r20 = 7 << 16; - r21 = 7 << 16; - r20 = r20 + 24472; - r22 = 7 << 16; - r21 = r21 + 1196; - r18 = 7 << 16; - r19 = 7 << 16; - r30 = r20 + r0; - case 0x53874: - r16 = r0 + 35; - case 0x53878: - r4 = r29 + 24; - r5 = r0 + 1024; - r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x5388c; - pc=0x59400; - run_59400(); return; - case 0x5388c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x53910; - continue; - } - addr=r29+24; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x53878; - continue; - } - r2 = r22 + 30624; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r4 = r29 + 24; - r5 = r21 + r0; - r6 = r20 + r0; - r7 = r18 + 23448; - /* Next insn is delay slot */ - r31=0x538c4; - pc=0x5f000; - run_5f000(); return; - case 0x538c4: - r2 = r2 < 3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x53910; - continue; - } - r16 = r19 + 30616; - r2 = r18 + 23448; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - r2 = r28 + -30620; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; - addr=r16+8; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - writePages[(r19+30616)>>>12][((r19+30616)>>>2)&0x3ff] = r30; - writePages[(r28+-30620)>>>12][((r28+-30620)>>>2)&0x3ff] = r0; - if(r2 != r23) { - /* Next insn is delay slot */ - pc=0x53874; - continue; - } - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x53904; - pc=0x39200; - run_39200(); return; - case 0x53904: - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x53920; - continue; - case 0x53910: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x5391c; - pc=0x39200; - run_39200(); return; - case 0x5391c: - r2 = r0 + r0; - case 0x53920: - r31 = readPages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff]; - r30 = readPages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff]; - r23 = readPages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff]; - r22 = readPages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff]; - r21 = readPages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff]; - r20 = readPages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff]; - r19 = readPages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff]; - r18 = readPages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff]; - r17 = readPages[(r29+1052)>>>12][((r29+1052)>>>2)&0x3ff]; - r16 = readPages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff]; - r29 = r29 + 1088; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x53a00: - pc=0x53a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_53a00() throws ExecutionException { /* 0x53a00 - 0x53c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x53a00: - r6 = readPages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff]; - r29 = r29 + -2088; - writePages[(r29+2084)>>>12][((r29+2084)>>>2)&0x3ff] = r31; - writePages[(r29+2080)>>>12][((r29+2080)>>>2)&0x3ff] = r17; - writePages[(r29+2076)>>>12][((r29+2076)>>>2)&0x3ff] = r16; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x53b0c; - continue; - } - r4 = r29 + 1048; - r5 = r0 + 1024; - /* Next insn is delay slot */ - r31=0x53a2c; - pc=0x59400; - run_59400(); return; - case 0x53a2c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x53b0c; - continue; - } - addr=r29+1048; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r16 = tmp; - r2 = r0 + 35; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x53abc; - continue; - } - r2 = 7 << 16; - r2 = r2 + 30624; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r4 = r29 + 1048; - case 0x53a54: - r5 = 7 << 16; - r17 = 7 << 16; - r16 = 7 << 16; - r5 = r5 + 1196; - r6 = r17 + 24472; - r7 = r16 + 23448; - /* Next insn is delay slot */ - r31=0x53a74; - pc=0x5f000; - run_5f000(); return; - case 0x53a74: - r2 = r2 < 3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x53b0c; - continue; - } - r2 = 7 << 16; - r17 = r17 + 24472; - writePages[(r2+30616)>>>12][((r2+30616)>>>2)&0x3ff] = r17; - r16 = r16 + 23448; - r2 = r2 + 30616; - r3 = r28 + -30620; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r16; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - writePages[(r28+-30620)>>>12][((r28+-30620)>>>2)&0x3ff] = r0; - case 0x53aa4: - r31 = readPages[(r29+2084)>>>12][((r29+2084)>>>2)&0x3ff]; - r17 = readPages[(r29+2080)>>>12][((r29+2080)>>>2)&0x3ff]; - r16 = readPages[(r29+2076)>>>12][((r29+2076)>>>2)&0x3ff]; - r29 = r29 + 2088; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x53abc: - r6 = readPages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff]; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x53b0c; - continue; - } - r4 = r29 + 24; - r5 = r0 + 1024; - /* Next insn is delay slot */ - r31=0x53adc; - pc=0x59400; - run_59400(); return; - case 0x53adc: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x53b0c; - continue; - } - addr=r29+24; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x53b28; - continue; - } - r2 = 7 << 16; - r2 = r2 + 30624; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r4 = r29 + 24; - /* Next insn is delay slot */ - pc=0x53a54; - continue; - case 0x53b0c: - r31 = readPages[(r29+2084)>>>12][((r29+2084)>>>2)&0x3ff]; - r17 = readPages[(r29+2080)>>>12][((r29+2080)>>>2)&0x3ff]; - r16 = readPages[(r29+2076)>>>12][((r29+2076)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 2088; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x53b28: - /* Next insn is delay slot */ - r31=0x53b30; - pc=0x53a00; - continue; - case 0x53b30: - /* Next insn is delay slot */ - pc=0x53aa4; - continue; - case 0x53c00: - pc=0x53c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_53c00() throws ExecutionException { /* 0x53c00 - 0x53e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x53c00: - r4 = readPages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff]; - r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x53c1c; - continue; - } - /* Next insn is delay slot */ - r31=0x53c1c; - pc=0x39200; - run_39200(); return; - case 0x53c1c: - r4 = 7 << 16; - r5 = 7 << 16; - r4 = r4 + 1184; - r5 = r5 + -632; - /* Next insn is delay slot */ - r31=0x53c34; - pc=0x3b800; - run_3b800(); return; - case 0x53c34: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff] = r2; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x53e00: - pc=0x53e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_53e00() throws ExecutionException { /* 0x53e00 - 0x54000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x53e00: - r4 = readPages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff]; - r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x53e1c; - continue; - } - /* Next insn is delay slot */ - r31=0x53e1c; - pc=0x39200; - run_39200(); return; - case 0x53e1c: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff] = r0; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x54000: - pc=0x54000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_54000() throws ExecutionException { /* 0x54000 - 0x54200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x54000: - r29 = r29 + -1104; - r5 = 7 << 16; - writePages[(r29+1104)>>>12][((r29+1104)>>>2)&0x3ff] = r4; - r4 = 7 << 16; - r4 = r4 + 1212; - r5 = r5 + -632; - writePages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff] = r17; - writePages[(r29+1100)>>>12][((r29+1100)>>>2)&0x3ff] = r31; - writePages[(r29+1096)>>>12][((r29+1096)>>>2)&0x3ff] = r30; - writePages[(r29+1092)>>>12][((r29+1092)>>>2)&0x3ff] = r23; - writePages[(r29+1088)>>>12][((r29+1088)>>>2)&0x3ff] = r22; - writePages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff] = r21; - writePages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff] = r20; - writePages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff] = r19; - writePages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff] = r18; - writePages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x54048; - pc=0x3b800; - run_3b800(); return; - case 0x54048: - r17 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x54160; - continue; - } - r20 = 7 << 16; - r20 = r20 + 29592; - r19 = 7 << 16; - r18 = r20 + r0; - case 0x54064: - r16 = r0 + 35; - case 0x54068: - r4 = r29 + 40; - r5 = r0 + 1024; - r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x5407c; - pc=0x59400; - run_59400(); return; - case 0x5407c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x54154; - continue; - } - addr=r29+40; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x54068; - continue; - } - r3 = 7 << 16; - r2 = r3 + 30640; - r3 = 7 << 16; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r22 = r3 + 27544; - r8 = 7 << 16; - r3 = 7 << 16; - r2 = 7 << 16; - r2 = r2 + 30642; - r21 = r8 + 26520; - r30 = r3 + 25496; - r5 = 7 << 16; - r23 = 7 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r22; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r21; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r30; - r4 = r29 + 40; - r5 = r5 + 1224; - r6 = r20 + r0; - r7 = r23 + 28568; - /* Next insn is delay slot */ - r31=0x540f0; - pc=0x5f000; - run_5f000(); return; - case 0x540f0: - r2 = r2 < 7 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x54154; - continue; - } - r2 = 7 << 16; - r4 = readPages[(r29+1104)>>>12][((r29+1104)>>>2)&0x3ff]; - r16 = r19 + 30632; - r10 = r23 + 28568; - r2 = r2 + -12264; - r5 = r18 + r0; - writePages[(r19+30632)>>>12][((r19+30632)>>>2)&0x3ff] = r18; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r10; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r22; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r21; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r30; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x54134; - pc=0x42c00; - run_42c00(); return; - case 0x54134: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x54064; - continue; - } - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x54148; - pc=0x39200; - run_39200(); return; - case 0x54148: - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x54164; - continue; - case 0x54154: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x54160; - pc=0x39200; - run_39200(); return; - case 0x54160: - r2 = r0 + r0; - case 0x54164: - r31 = readPages[(r29+1100)>>>12][((r29+1100)>>>2)&0x3ff]; - r30 = readPages[(r29+1096)>>>12][((r29+1096)>>>2)&0x3ff]; - r23 = readPages[(r29+1092)>>>12][((r29+1092)>>>2)&0x3ff]; - r22 = readPages[(r29+1088)>>>12][((r29+1088)>>>2)&0x3ff]; - r21 = readPages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff]; - r20 = readPages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff]; - r19 = readPages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff]; - r18 = readPages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff]; - r17 = readPages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff]; - r16 = readPages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff]; - r29 = r29 + 1104; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x54200: - pc=0x54200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_54200() throws ExecutionException { /* 0x54200 - 0x54400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x54200: - r29 = r29 + -1112; - r4 = r4 & 65535; - r5 = 7 << 16; - writePages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff] = r4; - r4 = 7 << 16; - r4 = r4 + 1212; - r5 = r5 + -632; - writePages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff] = r17; - writePages[(r29+1108)>>>12][((r29+1108)>>>2)&0x3ff] = r31; - writePages[(r29+1104)>>>12][((r29+1104)>>>2)&0x3ff] = r30; - writePages[(r29+1100)>>>12][((r29+1100)>>>2)&0x3ff] = r23; - writePages[(r29+1096)>>>12][((r29+1096)>>>2)&0x3ff] = r22; - writePages[(r29+1092)>>>12][((r29+1092)>>>2)&0x3ff] = r21; - writePages[(r29+1088)>>>12][((r29+1088)>>>2)&0x3ff] = r20; - writePages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff] = r19; - writePages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff] = r18; - writePages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x5424c; - pc=0x3b800; - run_3b800(); return; - case 0x5424c: - r17 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x54360; - continue; - } - r19 = 7 << 16; - r22 = 7 << 16; - r19 = r19 + 29592; - r18 = 7 << 16; - case 0x54268: - r16 = r0 + 35; - case 0x5426c: - r4 = r29 + 40; - r5 = r0 + 1024; - r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x54280; - pc=0x59400; - run_59400(); return; - case 0x54280: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x54354; - continue; - } - addr=r29+40; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x5426c; - continue; - } - r2 = r22 + 30640; - r3 = 7 << 16; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r20 = r3 + 27544; - r8 = 7 << 16; - r3 = 7 << 16; - r2 = 7 << 16; - r2 = r2 + 30642; - r23 = r8 + 26520; - r30 = r3 + 25496; - r5 = 7 << 16; - r21 = 7 << 16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r23; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r30; - r4 = r29 + 40; - r5 = r5 + 1224; - r6 = r19 + r0; - r7 = r21 + 28568; - /* Next insn is delay slot */ - r31=0x542f0; - pc=0x5f000; - run_5f000(); return; - case 0x542f0: - r2 = r2 < 7 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x54354; - continue; - } - r2 = 7 << 16; - r2 = r2 + 29592; - writePages[(r18+30632)>>>12][((r18+30632)>>>2)&0x3ff] = r2; - r2 = 7 << 16; - r16 = r18 + 30632; - r2 = r2 + -12264; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r2; - r3 = readPages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff]; - addr=r16+8; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r10 = r21 + 28568; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r10; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r20; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r23; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r30; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x54268; - continue; - } - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x54348; - pc=0x39200; - run_39200(); return; - case 0x54348: - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x54364; - continue; - case 0x54354: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x54360; - pc=0x39200; - run_39200(); return; - case 0x54360: - r2 = r0 + r0; - case 0x54364: - r31 = readPages[(r29+1108)>>>12][((r29+1108)>>>2)&0x3ff]; - r30 = readPages[(r29+1104)>>>12][((r29+1104)>>>2)&0x3ff]; - r23 = readPages[(r29+1100)>>>12][((r29+1100)>>>2)&0x3ff]; - r22 = readPages[(r29+1096)>>>12][((r29+1096)>>>2)&0x3ff]; - r21 = readPages[(r29+1092)>>>12][((r29+1092)>>>2)&0x3ff]; - r20 = readPages[(r29+1088)>>>12][((r29+1088)>>>2)&0x3ff]; - r19 = readPages[(r29+1084)>>>12][((r29+1084)>>>2)&0x3ff]; - r18 = readPages[(r29+1080)>>>12][((r29+1080)>>>2)&0x3ff]; - r17 = readPages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff]; - r16 = readPages[(r29+1072)>>>12][((r29+1072)>>>2)&0x3ff]; - r29 = r29 + 1112; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x54400: - pc=0x54400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_54400() throws ExecutionException { /* 0x54400 - 0x54600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x54400: - r6 = readPages[(r28+-30612)>>>12][((r28+-30612)>>>2)&0x3ff]; - r29 = r29 + -2112; - writePages[(r29+2108)>>>12][((r29+2108)>>>2)&0x3ff] = r31; - writePages[(r29+2104)>>>12][((r29+2104)>>>2)&0x3ff] = r20; - writePages[(r29+2100)>>>12][((r29+2100)>>>2)&0x3ff] = r19; - writePages[(r29+2096)>>>12][((r29+2096)>>>2)&0x3ff] = r18; - writePages[(r29+2092)>>>12][((r29+2092)>>>2)&0x3ff] = r17; - writePages[(r29+2088)>>>12][((r29+2088)>>>2)&0x3ff] = r16; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x54590; - continue; - } - r4 = r29 + 1064; - r5 = r0 + 1024; - /* Next insn is delay slot */ - r31=0x54438; - pc=0x59400; - run_59400(); return; - case 0x54438: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x54590; - continue; - } - addr=r29+1064; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r16 = tmp; - r2 = r0 + 35; - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x54510; - continue; - } - r2 = 7 << 16; - r2 = r2 + 30640; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r18 = 7 << 16; - r2 = 7 << 16; - r17 = 7 << 16; - r16 = 7 << 16; - r2 = r2 + 30642; - r18 = r18 + 27544; - r17 = r17 + 26520; - r16 = r16 + 25496; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; - r4 = r29 + 1064; - case 0x54490: - r5 = 7 << 16; - r20 = 7 << 16; - r19 = 7 << 16; - r5 = r5 + 1224; - r6 = r20 + 29592; - r7 = r19 + 28568; - /* Next insn is delay slot */ - r31=0x544b0; - pc=0x5f000; - run_5f000(); return; - case 0x544b0: - r2 = r2 < 7 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x54590; - continue; - } - r2 = 7 << 16; - r20 = r20 + 29592; - r3 = 7 << 16; - writePages[(r2+30632)>>>12][((r2+30632)>>>2)&0x3ff] = r20; - r19 = r19 + 28568; - r2 = r2 + 30632; - r3 = r3 + -12264; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r19; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r18; - writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = r17; - writePages[(r2+24)>>>12][((r2+24)>>>2)&0x3ff] = r16; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r3; - case 0x544ec: - r31 = readPages[(r29+2108)>>>12][((r29+2108)>>>2)&0x3ff]; - r20 = readPages[(r29+2104)>>>12][((r29+2104)>>>2)&0x3ff]; - r19 = readPages[(r29+2100)>>>12][((r29+2100)>>>2)&0x3ff]; - r18 = readPages[(r29+2096)>>>12][((r29+2096)>>>2)&0x3ff]; - r17 = readPages[(r29+2092)>>>12][((r29+2092)>>>2)&0x3ff]; - r16 = readPages[(r29+2088)>>>12][((r29+2088)>>>2)&0x3ff]; - r29 = r29 + 2112; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x54510: - r6 = readPages[(r28+-30612)>>>12][((r28+-30612)>>>2)&0x3ff]; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x54590; - continue; - } - r4 = r29 + 40; - r5 = r0 + 1024; - /* Next insn is delay slot */ - r31=0x54530; - pc=0x59400; - run_59400(); return; - case 0x54530: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x54590; - continue; - } - addr=r29+40; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x545b8; - continue; - } - r2 = 7 << 16; - r2 = r2 + 30640; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r18 = 7 << 16; - r2 = 7 << 16; - r17 = 7 << 16; - r16 = 7 << 16; - r2 = r2 + 30642; - r18 = r18 + 27544; - r17 = r17 + 26520; - r16 = r16 + 25496; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; - r4 = r29 + 40; - /* Next insn is delay slot */ - pc=0x54490; - continue; - case 0x54590: - r31 = readPages[(r29+2108)>>>12][((r29+2108)>>>2)&0x3ff]; - r20 = readPages[(r29+2104)>>>12][((r29+2104)>>>2)&0x3ff]; - r19 = readPages[(r29+2100)>>>12][((r29+2100)>>>2)&0x3ff]; - r18 = readPages[(r29+2096)>>>12][((r29+2096)>>>2)&0x3ff]; - r17 = readPages[(r29+2092)>>>12][((r29+2092)>>>2)&0x3ff]; - r16 = readPages[(r29+2088)>>>12][((r29+2088)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 2112; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x545b8: - /* Next insn is delay slot */ - r31=0x545c0; - pc=0x54400; - continue; - case 0x545c0: - /* Next insn is delay slot */ - pc=0x544ec; - continue; - case 0x54600: - pc=0x54600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_54600() throws ExecutionException { /* 0x54600 - 0x54800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x54600: - r4 = readPages[(r28+-30612)>>>12][((r28+-30612)>>>2)&0x3ff]; - r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5461c; - continue; - } - /* Next insn is delay slot */ - r31=0x5461c; - pc=0x39200; - run_39200(); return; - case 0x5461c: - r4 = 7 << 16; - r5 = 7 << 16; - r4 = r4 + 1184; - r5 = r5 + -632; - /* Next insn is delay slot */ - r31=0x54634; - pc=0x3b800; - run_3b800(); return; - case 0x54634: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30612)>>>12][((r28+-30612)>>>2)&0x3ff] = r2; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x54800: - pc=0x54800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_54800() throws ExecutionException { /* 0x54800 - 0x54a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x54800: - r4 = readPages[(r28+-30612)>>>12][((r28+-30612)>>>2)&0x3ff]; - r29 = r29 + -24; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5481c; - continue; - } - /* Next insn is delay slot */ - r31=0x5481c; - pc=0x39200; - run_39200(); return; - case 0x5481c: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30612)>>>12][((r28+-30612)>>>2)&0x3ff] = r0; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x54a00: - pc=0x54a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_54a00() throws ExecutionException { /* 0x54a00 - 0x54c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x54a00: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r29 = r29 + -32; - r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - /* Next insn is delay slot */ - r31=0x54a20; - pc=0x59a00; - run_59a00(); return; - case 0x54a20: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r16 = 7 << 16; - r4 = readPages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x54a34; - pc=0x39a00; - run_39a00(); return; - case 0x54a34: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r4 = r16 + 20056; - r6 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r5 = r0 + 1024; - /* Next insn is delay slot */ - r31=0x54a4c; - pc=0x59400; - run_59400(); return; - case 0x54a4c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x54ab8; - continue; - } - r4 = r16 + 20056; - /* Next insn is delay slot */ - r31=0x54a60; - pc=0x10268; - run_10200(); return; - case 0x54a60: - r17 = r2 + -1; - r16 = r16 + 20056; - r3 = r16 + r17; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r3 = r0 + 10; - if(r4 == r3) { - /* Next insn is delay slot */ - pc=0x54a80; - continue; - } - r17 = r2 + r0; - case 0x54a80: - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r17 = r16 + r17; - r5 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r4 = r0 + 10; - /* Next insn is delay slot */ - r31=0x54a98; - pc=0x3c000; - run_3c000(); return; - case 0x54a98: - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r16 + r0; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x54ab8: - r17 = r0 + r0; - r16 = r16 + 20056; - /* Next insn is delay slot */ - pc=0x54a80; - continue; - case 0x54c00: - pc=0x54c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_54c00() throws ExecutionException { /* 0x54c00 - 0x54e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x54c00: - r29 = r29 + -32; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r16 = r4 + r0; - r4 = r0 + 128; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r18 = r5 + r0; - r17 = r6 + r0; - /* Next insn is delay slot */ - r31=0x54c2c; - pc=0x3e800; - run_3e800(); return; - case 0x54c2c: - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x54cbc; - continue; - } - r4 = r2 + r0; - r5 = r0 + 128; - r6 = r18 + r0; - r7 = r17 + r0; - /* Next insn is delay slot */ - r31=0x54c50; - pc=0x64e00; - run_64e00(); return; - case 0x54c50: - r3 = r2 < 128 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x54c78; - continue; - } - case 0x54c5c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x54c78: - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r5 = r2 + 1; - /* Next insn is delay slot */ - r31=0x54c88; - pc=0x40600; - run_40600(); return; - case 0x54c88: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x54cc8; - continue; - } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r5 = r18 + r0; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r6 = r17 + r0; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = r2 + r0; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x65200; - run_65200(); return; - case 0x54cbc: - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x54c5c; - continue; - case 0x54cc8: - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x54cd4; - pc=0x3ea00; - run_3ea00(); return; - case 0x54cd4: - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x54c5c; - continue; - case 0x54e00: - pc=0x54e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_54e00() throws ExecutionException { /* 0x54e00 - 0x55000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x54e00: - r4 = 7 << 16; - r4 = r4 + 1260; - /* Next insn is delay slot */ - pc=0x3e000; - run_3e000(); return; - case 0x55000: - pc=0x55000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_55000() throws ExecutionException { /* 0x55000 - 0x55200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x55000: - r29 = r29 + -32; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - r16 = r4 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x550b4; - continue; - } - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x550b4; - continue; - } - /* Next insn is delay slot */ - r31=0x55038; - pc=0x10268; - run_10200(); return; - case 0x55038: - r2 = r2 + -1; - r2 = r16 + r2; - r3 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5510c; - continue; - } - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r3 = r0 + 47; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x550e0; - continue; - } - r4 = r0 + 47; - /* Next insn is delay slot */ - pc=0x55078; - continue; - case 0x55068: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r4) { - /* Next insn is delay slot */ - pc=0x550e0; - continue; - } - case 0x55078: - r2 = r2 + -1; - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x55068; - continue; - } - case 0x55084: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 47; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x551b4; - continue; - } - r3 = 7 << 16; - r3 = r3 + -9052; - case 0x5509c: - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r3 = tmp; - r2 = 7 << 16; - addr=r2+19032; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r2 + 19032; - /* Next insn is delay slot */ - pc=0x550c4; - continue; - case 0x550b4: - r2 = 7 << 16; - r3 = r0 + 11776; - addr=r2+19032; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r2 + 19032; - case 0x550c4: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x550e0: - r4 = r0 + 47; - /* Next insn is delay slot */ - pc=0x550fc; - continue; - case 0x550ec: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x5510c; - continue; - } - case 0x550fc: - r2 = r2 + -1; - r3 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x550ec; - continue; - } - case 0x5510c: - r4 = r0 + 47; - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x55130; - continue; - } - /* Next insn is delay slot */ - pc=0x55084; - continue; - case 0x55120: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r4) { - /* Next insn is delay slot */ - pc=0x55140; - continue; - } - case 0x55130: - r2 = r2 + -1; - r3 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x55120; - continue; - } - case 0x55140: - r2 = r2 - r16; - r3 = r2 + 2; - r3 = (r3&0xffffffffL) < (1025&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x55198; - continue; - } - r17 = r2 + 1; - r18 = 7 << 16; - r4 = r18 + 19032; - r5 = r16 + r0; - r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x55170; - pc=0x5f400; - run_5f400(); return; - case 0x55170: - r2 = r18 + 19032; - r17 = r17 + r2; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x55198: - /* Next insn is delay slot */ - r31=0x551a0; - pc=0x38c00; - run_38c00(); return; - case 0x551a0: - r3 = r0 + 91; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x550c4; - continue; - case 0x551b4: - r3 = 7 << 16; - r3 = r3 + 1268; - /* Next insn is delay slot */ - pc=0x5509c; - continue; - case 0x55200: - pc=0x55200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_55200() throws ExecutionException { /* 0x55200 - 0x55400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x55200: - r29 = r29 + -32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - r16 = r4 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5534c; - continue; - } - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5534c; - continue; - } - /* Next insn is delay slot */ - r31=0x55234; - pc=0x10268; - run_10200(); return; - case 0x55234: - r2 = r2 + -1; - r2 = r16 + r2; - r3 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5538c; - continue; - } - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r3 = r0 + 47; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x552e0; - continue; - } - r4 = r0 + 47; - /* Next insn is delay slot */ - pc=0x55274; - continue; - case 0x55264: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r4) { - /* Next insn is delay slot */ - pc=0x552d4; - continue; - } - case 0x55274: - r2 = r2 + -1; - if(r2 != r16) { - /* Next insn is delay slot */ - pc=0x55264; - continue; - } - case 0x55280: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r3 = r0 + 47; - if(r4 == r3) { - /* Next insn is delay slot */ - pc=0x55374; - continue; - } - case 0x55290: - r5 = r2 + r0; - r2 = r0 + r0; - case 0x55298: - r16 = r2 + 1; - r17 = 7 << 16; - r6 = r16 + r0; - r4 = r17 + 18008; - /* Next insn is delay slot */ - r31=0x552b0; - pc=0x5f400; - run_5f400(); return; - case 0x552b0: - r2 = r17 + 18008; - r16 = r16 + r2; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x552bc: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x552d4: - r3 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x55290; - continue; - } - case 0x552e0: - addr=r2+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r6 = tmp; - r3 = r0 + 47; - r5 = r2 + r0; - r4 = r0 + 47; - if(r6 != r3) { - /* Next insn is delay slot */ - pc=0x55310; - continue; - } - /* Next insn is delay slot */ - pc=0x55290; - continue; - case 0x55300: - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x5531c; - continue; - } - case 0x55310: - r5 = r5 + -1; - if(r5 != r16) { - /* Next insn is delay slot */ - pc=0x55300; - continue; - } - case 0x5531c: - r2 = r2 - r5; - r3 = r2 + 2; - r3 = (r3&0xffffffffL) < (1025&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x55298; - continue; - } - /* Next insn is delay slot */ - r31=0x55338; - pc=0x38c00; - run_38c00(); return; - case 0x55338: - r3 = r0 + 91; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x552bc; - continue; - case 0x5534c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = 7 << 16; - r3 = r0 + 11776; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - addr=r2+18008; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r2 + 18008; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x55374: - r2 = 7 << 16; - r3 = r0 + 12032; - addr=r2+18008; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r2 + 18008; - /* Next insn is delay slot */ - pc=0x552bc; - continue; - case 0x5538c: - if(r16 == r2) { - /* Next insn is delay slot */ - pc=0x55280; - continue; - } - r5 = r2 + r0; - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x55298; - continue; - case 0x55400: - pc=0x55400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_55400() throws ExecutionException { /* 0x55400 - 0x55600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x55400: - r29 = r29 + -72; - r2 = r0 + 1; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r2 = r0 + 32; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r18; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r17; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r16; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r31; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r20; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r19; - r17 = r4 + r0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x5543c; - pc=0x38c00; - run_38c00(); return; - case 0x5543c: - r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = r0 + 8; - r16 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x55498; - continue; - } - r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r5 = 7 << 16; - r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r5 = r5 + 1096; - /* Next insn is delay slot */ - r31=0x5546c; - pc=0x3bc00; - run_3bc00(); return; - case 0x5546c: - r2 = r0 + 22; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - case 0x55474: - /* Next insn is delay slot */ - r31=0x5547c; - pc=0x38c00; - run_38c00(); return; - case 0x5547c: - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = r0 + 12; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x5585c; - run_55800(); return; - } - r18 = r0 + -1; - /* Next insn is delay slot */ - pc=0x554d0; - continue; - case 0x55498: - r2 = r29 + 40; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; - r4 = r16 + r0; - r5 = r29 + 32; - r6 = r0 + 2; - r7 = r17 + r0; - /* Next insn is delay slot */ - r31=0x554c0; - pc=0x4928c; - run_49200(); return; - case 0x554c0: - r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x55474; - continue; - } - case 0x554cc: - r18 = r0 + r0; - case 0x554d0: - r2 = r0 + 1; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - r2 = r0 + 10; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - addr=r17+31; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 + 32; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x554f4; - pc=0x38c00; - run_38c00(); return; - case 0x554f4: - r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = r0 + 8; - r16 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x55550; - continue; - } - r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r5 = 7 << 16; - r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r5 = r5 + 1096; - /* Next insn is delay slot */ - r31=0x55524; - pc=0x3bc00; - run_3bc00(); return; - case 0x55524: - r2 = r0 + 22; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - case 0x5552c: - /* Next insn is delay slot */ - r31=0x55534; - pc=0x38c00; - run_38c00(); return; - case 0x55534: - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = r0 + 12; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x55870; - run_55800(); return; - } - r18 = r0 + -1; - /* Next insn is delay slot */ - pc=0x55584; - continue; - case 0x55550: - r2 = r29 + 40; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; - r4 = r16 + r0; - r5 = r29 + 32; - r6 = r0 + 2; - r7 = r17 + 32; - /* Next insn is delay slot */ - r31=0x55578; - pc=0x4928c; - run_49200(); return; - case 0x55578: - r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x5552c; - continue; - } - case 0x55584: - r2 = r0 + 1; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - r2 = r0 + 2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - addr=r17+63; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 + 32; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x555a8; - pc=0x38c00; - run_38c00(); return; - case 0x555a8: - r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = r0 + 8; - r16 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x55604; - run_55600(); return; - } - r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r5 = 7 << 16; - r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r5 = r5 + 1096; - /* Next insn is delay slot */ - r31=0x555d8; - pc=0x3bc00; - run_3bc00(); return; - case 0x555d8: - r2 = r0 + 22; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - case 0x555e0: - /* Next insn is delay slot */ - r31=0x555e8; - pc=0x38c00; - run_38c00(); return; - case 0x555e8: - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = r0 + 12; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x55884; - run_55800(); return; - } - r18 = r0 + -1; - /* Next insn is delay slot */ - pc=0x55638; - run_55600(); return; - case 0x55600: - pc=0x55600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_55600() throws ExecutionException { /* 0x55600 - 0x55800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x55600: - case 0x55604: - r2 = r29 + 40; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; - r4 = r16 + r0; - r5 = r29 + 32; - r6 = r0 + 2; - r7 = r17 + 64; - /* Next insn is delay slot */ - r31=0x5562c; - pc=0x4928c; - run_49200(); return; - case 0x5562c: - r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x555e0; - run_55400(); return; - } - case 0x55638: - r2 = r0 + 1; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - r2 = r0 + 4; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - addr=r17+95; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 + 32; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x5565c; - pc=0x38c00; - run_38c00(); return; - case 0x5565c: - r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r20 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = r0 + 8; - r16 = r17 + 96; - r19 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x556bc; - continue; - } - r4 = readPages[(r19+12)>>>12][((r19+12)>>>2)&0x3ff]; - r5 = 7 << 16; - r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r5 = r5 + 1096; - /* Next insn is delay slot */ - r31=0x55690; - pc=0x3bc00; - run_3bc00(); return; - case 0x55690: - r2 = r0 + 22; - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; - case 0x55698: - /* Next insn is delay slot */ - r31=0x556a0; - pc=0x38c00; - run_38c00(); return; - case 0x556a0: - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = r0 + 12; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x55898; - run_55800(); return; - } - r18 = r0 + -1; - /* Next insn is delay slot */ - pc=0x556f0; - continue; - case 0x556bc: - r2 = r29 + 40; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; - r4 = r19 + r0; - r5 = r29 + 32; - r6 = r0 + 2; - r7 = r16 + r0; - /* Next insn is delay slot */ - r31=0x556e4; - pc=0x4928c; - run_49200(); return; - case 0x556e4: - r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x55698; - continue; - } - case 0x556f0: - r2 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - addr=r17+127; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = r2 + -1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x55760; - continue; - } - r4 = r0 + 32; - r6 = r0 + -1; - /* Next insn is delay slot */ - pc=0x55724; - continue; - case 0x55714: - r3 = r3 + -1; - r16 = r16 + 1; - if(r3 == r6) { - /* Next insn is delay slot */ - pc=0x55760; - continue; - } - case 0x55724: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r5 = tmp; - r5 = r5 + -9; - r5 = r5 & 255; - r5 = (r5&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x55714; - continue; - } - r2 = (r3&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x557e4; - continue; - } - r3 = r3 + -1; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r16 = r16 + 1; - if(r3 != r6) { - /* Next insn is delay slot */ - pc=0x55724; - continue; - } - case 0x55760: - r2 = r0 + 6; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - r2 = r0 + 1; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r2 = r0 + 32; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x55780; - pc=0x38c00; - run_38c00(); return; - case 0x55780: - r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = r0 + 8; - r16 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x557f0; - continue; - } - r4 = readPages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff]; - r5 = 7 << 16; - r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r5 = r5 + 1096; - /* Next insn is delay slot */ - r31=0x557b0; - pc=0x3bc00; - run_3bc00(); return; - case 0x557b0: - r2 = r0 + 22; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - case 0x557b8: - /* Next insn is delay slot */ - r31=0x557c0; - pc=0x38c00; - run_38c00(); return; - case 0x557c0: - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r2 = r0 + 12; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x55850; - run_55800(); return; - } - /* Next insn is delay slot */ - r31=0x557d8; - pc=0x38c00; - run_38c00(); return; - case 0x557d8: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r19; - /* Next insn is delay slot */ - pc=0x55824; - run_55800(); return; - case 0x557e4: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x55714; - continue; - case 0x557f0: - r2 = r29 + 40; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; - case 0x55800: - pc=0x55800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_55800() throws ExecutionException { /* 0x55800 - 0x55a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x55800: - r4 = r16 + r0; - r5 = r29 + 32; - r6 = r0 + 2; - r7 = r17 + 128; - /* Next insn is delay slot */ - r31=0x55818; - pc=0x4928c; - run_49200(); return; - case 0x55818: - r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x557b8; - run_55600(); return; - } - case 0x55824: - r31 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r2 = r18 + r0; - r20 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r19 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r18 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r16 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - addr=r17+159; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r17 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r29 = r29 + 72; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x55850: - r18 = r0 + -1; - /* Next insn is delay slot */ - pc=0x55824; - continue; - case 0x5585c: - /* Next insn is delay slot */ - r31=0x55864; - pc=0x38c00; - run_38c00(); return; - case 0x55864: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r18; - /* Next insn is delay slot */ - pc=0x554cc; - run_55400(); return; - case 0x55870: - /* Next insn is delay slot */ - r31=0x55878; - pc=0x38c00; - run_38c00(); return; - case 0x55878: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r19; - /* Next insn is delay slot */ - pc=0x55584; - run_55400(); return; - case 0x55884: - /* Next insn is delay slot */ - r31=0x5588c; - pc=0x38c00; - run_38c00(); return; - case 0x5588c: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r19; - /* Next insn is delay slot */ - pc=0x55638; - run_55600(); return; - case 0x55898: - /* Next insn is delay slot */ - r31=0x558a0; - pc=0x38c00; - run_38c00(); return; - case 0x558a0: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r20; - /* Next insn is delay slot */ - pc=0x556f0; - run_55600(); return; - case 0x55a00: - pc=0x55a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_55a00() throws ExecutionException { /* 0x55a00 - 0x55c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x55a00: - r29 = r29 + -56; - r2 = r0 + 1; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - r2 = r0 + 10; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r7 = r4 + r0; - r2 = r29 + 40; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r5; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r0; - r5 = r29 + 32; - r6 = r0 + 2; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x55a44; - pc=0x4928c; - run_49200(); return; - case 0x55a44: - r2 = r2 + 1; - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r2 = r0 - r2; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x55c00: - pc=0x55c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_55c00() throws ExecutionException { /* 0x55c00 - 0x55e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x55c00: - r29 = r29 + -40; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - r19 = r4 + r0; - r18 = r5 + r0; - r17 = r0 + -1; - /* Next insn is delay slot */ - r31=0x55c2c; - pc=0x62c00; - run_62c00(); return; - case 0x55c2c: - r16 = r2 + r0; - if(r2 == r17) { - /* Next insn is delay slot */ - pc=0x55c64; - continue; - } - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x55c88; - continue; - } - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x55c4c; - pc=0x49ab4; - run_49a00(); return; - case 0x55c4c: - if(r2 == r17) { - /* Next insn is delay slot */ - pc=0x55d3c; - continue; - } - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x55d18; - continue; - } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x55c94; - continue; - } - case 0x55c64: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r2 = r16 + r0; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x55c88: - r4 = r0 + r0; - /* Next insn is delay slot */ - r31=0x55c94; - pc=0x48800; - run_48800(); return; - case 0x55c94: - r4 = 7 << 16; - r4 = r4 + 1272; - r5 = r0 + 2; - r6 = r0 + r0; - /* Next insn is delay slot */ - r31=0x55cac; - pc=0x63000; - run_63000(); return; - case 0x55cac: - r17 = r2 + r0; - r2 = r0 + -1; - if(r17 == r2) { - /* Next insn is delay slot */ - pc=0x55c64; - continue; - } - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r17 + r0; - r6 = r0 + r0; - /* Next insn is delay slot */ - r31=0x55cd0; - pc=0x48c90; - run_48c00(); return; - case 0x55cd0: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r17 + r0; - r6 = r0 + 1; - /* Next insn is delay slot */ - r31=0x55ce4; - pc=0x48c90; - run_48c00(); return; - case 0x55ce4: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r17 + r0; - r6 = r0 + 2; - /* Next insn is delay slot */ - r31=0x55cf8; - pc=0x48c90; - run_48c00(); return; - case 0x55cf8: - r2 = r17 < 3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x55c64; - continue; - } - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x55d10; - pc=0x62a00; - run_62a00(); return; - case 0x55d10: - /* Next insn is delay slot */ - pc=0x55c64; - continue; - case 0x55d18: - r5 = 7 << 16; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r5 + 1268; - /* Next insn is delay slot */ - r31=0x55d2c; - pc=0x48c10; - run_48c00(); return; - case 0x55d2c: - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x55c64; - continue; - } - /* Next insn is delay slot */ - pc=0x55c94; - continue; - case 0x55d3c: - r16 = r0 + -1; - /* Next insn is delay slot */ - pc=0x55c64; - continue; - case 0x55e00: - pc=0x55e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_55e00() throws ExecutionException { /* 0x55e00 - 0x56000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x55e00: - r29 = r29 + -80; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r31; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r23; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r22; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r21; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r20; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r19; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r18; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r17; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r16; - r23 = r4 + r0; - r22 = r5 + r0; - /* Next insn is delay slot */ - r31=0x55e38; - pc=0x38c00; - run_38c00(); return; - case 0x55e38: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - r4 = r23 + r0; - r5 = r29 + 32; - r6 = r0 + r0; - /* Next insn is delay slot */ - r31=0x55e50; - pc=0x5fc00; - run_5fc00(); return; - case 0x55e50: - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x55e5c; - pc=0x38c00; - run_38c00(); return; - case 0x55e5c: - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r18 = r0 + 34; - r17 = r29 + 16; - r19 = r0 + r0; - r20 = r0 + 46; - r21 = r0 + 3; - if(r2 == r18) { - /* Next insn is delay slot */ - pc=0x55ef0; - continue; - } - case 0x55e7c: - r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - if(r3 == r23) { - /* Next insn is delay slot */ - pc=0x55ef0; - continue; - } - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x55f44; - continue; - } - if(r4 != r20) { - /* Next insn is delay slot */ - pc=0x55f24; - continue; - } - r17 = r17 + 4; - if(r19 == r21) { - /* Next insn is delay slot */ - pc=0x55ef0; - continue; - } - r23 = r3 + 1; - /* Next insn is delay slot */ - r31=0x55ebc; - pc=0x38c00; - run_38c00(); return; - case 0x55ebc: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - r4 = r23 + r0; - r5 = r29 + 32; - r6 = r0 + r0; - /* Next insn is delay slot */ - r31=0x55ed4; - pc=0x5fc00; - run_5fc00(); return; - case 0x55ed4: - r16 = r2 + r0; - /* Next insn is delay slot */ - r31=0x55ee0; - pc=0x38c00; - run_38c00(); return; - case 0x55ee0: - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r19 = r19 + 1; - if(r2 != r18) { - /* Next insn is delay slot */ - pc=0x55e7c; - continue; - } - case 0x55ef0: - r2 = r0 + r0; - case 0x55ef4: - r31 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r23 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r22 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r21 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r20 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r19 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r18 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r29 = r29 + 80; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x55f24: - r2 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - r4 = r4 & 255; - r4 = r2 + r4; - addr=r4+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r2 & 8; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x55ef0; - continue; - } - case 0x55f44: - r2 = r0 + 2; - if(r19 == r2) { - /* Next insn is delay slot */ - pc=0x55fe8; - continue; - } - r2 = r0 + 3; - if(r19 == r2) { - /* Next insn is delay slot */ - pc=0x55f80; - continue; - } - r2 = r0 + 1; - if(r19 == r2) { - /* Next insn is delay slot */ - pc=0x56038; - run_56000(); return; - } - case 0x55f68: - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x5606c; - run_56000(); return; - } - writePages[(r22+0)>>>12][((r22+0)>>>2)&0x3ff] = r16; - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x55ef4; - continue; - case 0x55f80: - r2 = (r16&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x55ef0; - continue; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r3 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x55ef0; - continue; - } - r4 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r3 = (r4&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x55ef0; - continue; - } - r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r5 = (r3&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x55ef0; - continue; - } - r4 = r4 << 16; - r2 = r2 << 24; - r2 = r4 | r2; - r3 = r3 << 8; - r2 = r2 | r3; - r16 = r2 | r16; - /* Next insn is delay slot */ - pc=0x55f68; - continue; - case 0x55fe8: - r2 = 1 << 16; - r2 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x55ef0; - continue; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - case 0x56000: - pc=0x56000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_56000() throws ExecutionException { /* 0x56000 - 0x56200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x56000: - r3 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x55ef0; - run_55e00(); return; - } - r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = (r3&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x55ef0; - run_55e00(); return; - } - r3 = r3 << 16; - r2 = r2 << 24; - r2 = r3 | r2; - r16 = r2 | r16; - /* Next insn is delay slot */ - pc=0x55f68; - run_55e00(); return; - case 0x56038: - r2 = 256 << 16; - r2 = ((r16 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x55ef0; - run_55e00(); return; - } - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r3 = (r2&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x55ef0; - run_55e00(); return; - } - r2 = r2 << 24; - r16 = r16 | r2; - /* Next insn is delay slot */ - pc=0x55f68; - run_55e00(); return; - case 0x5606c: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x55ef4; - run_55e00(); return; - case 0x56200: - pc=0x56200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_56200() throws ExecutionException { /* 0x56200 - 0x56400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x56200: - r29 = r29 + -32; - r5 = r29 + 16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x56214; - pc=0x55e00; - run_55e00(); return; - case 0x56214: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x56230; - continue; - } - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r0 + -1; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x56230: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x56400: - pc=0x56400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_56400() throws ExecutionException { /* 0x56400 - 0x56600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x56400: - r29 = r29 + -56; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; - r20 = readPages[(r7+0)>>>12][((r7+0)>>>2)&0x3ff]; - r5 = r5 & 65535; - r2 = r20 < 2 ? 1 : 0; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r22; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r23; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r17 = r4 + r0; - r19 = r6 + r0; - r22 = r7 + r0; - addr=r6+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r5&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x565cc; - continue; - } - addr=r6+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r5&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r16 = r0 + 2; - case 0x56454: - r4 = readPages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5646c; - continue; - } - /* Next insn is delay slot */ - r31=0x5646c; - pc=0x39200; - run_39200(); return; - case 0x5646c: - r4 = 7 << 16; - r5 = 7 << 16; - r4 = r4 + 1184; - r5 = r5 + -632; - /* Next insn is delay slot */ - r31=0x56484; - pc=0x3b800; - run_3b800(); return; - case 0x56484: - writePages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff] = r2; - r21 = r0 + r0; - case 0x5648c: - /* Next insn is delay slot */ - r31=0x56494; - pc=0x53a00; - run_53a00(); return; - case 0x56494: - r18 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5656c; - continue; - } - case 0x564a0: - if(r16 <= 0) { - /* Next insn is delay slot */ - pc=0x564ec; - continue; - } - addr=r2+8; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r4 = tmp; - addr=r19+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x5648c; - continue; - } - r8 = r19 + 2; - r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x564e0; - continue; - case 0x564cc: - r8 = r8 + 2; - addr=r8+-2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x5648c; - continue; - } - case 0x564e0: - r3 = r3 + 1; - if(r3 != r16) { - /* Next insn is delay slot */ - pc=0x564cc; - continue; - } - case 0x564ec: - r23 = readPages[(r18+12)>>>12][((r18+12)>>>2)&0x3ff]; - r4 = readPages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5648c; - continue; - } - r23 = r23 + 4; - /* Next insn is delay slot */ - pc=0x56524; - continue; - case 0x56510: - r23 = r23 + 4; - r4 = readPages[(r23+-4)>>>12][((r23+-4)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5648c; - continue; - } - case 0x56524: - r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x56530; - pc=0x42c00; - run_42c00(); return; - case 0x56530: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x56510; - continue; - } - r2 = r16 < r20 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x565c0; - continue; - } - addr=r18+8; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r3 = tmp; - r2 = r16 << 1; - r2 = r19 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x5655c; - pc=0x53a00; - run_53a00(); return; - case 0x5655c: - r16 = r16 + 1; - r18 = r2 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x564a0; - continue; - } - case 0x5656c: - r4 = readPages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x56584; - continue; - } - /* Next insn is delay slot */ - r31=0x56584; - pc=0x39200; - run_39200(); return; - case 0x56584: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - writePages[(r22+0)>>>12][((r22+0)>>>2)&0x3ff] = r16; - r2 = r21 + r0; - r23 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r22 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r28+-30616)>>>12][((r28+-30616)>>>2)&0x3ff] = r0; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x565c0: - r21 = r0 + -1; - /* Next insn is delay slot */ - pc=0x5648c; - continue; - case 0x565cc: - r16 = r0 + 1; - /* Next insn is delay slot */ - pc=0x56454; - continue; - case 0x56600: - pc=0x56600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_56600() throws ExecutionException { /* 0x56600 - 0x56800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x56600: - r29 = r29 + -96; - r6 = r29 + 16; - r7 = r29 + 80; - r2 = r0 + 32; - r5 = r5 & 65535; - writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r31; - addr=r29+80; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x56624; - pc=0x56400; - run_56400(); return; - case 0x56624: - addr=r29+80; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r5 = tmp; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r29 + 16; - /* Next insn is delay slot */ - r31=0x56638; - pc=0x498e4; - run_49800(); return; - case 0x56638: - r31 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r29 = r29 + 96; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x56800: - pc=0x56800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_56800() throws ExecutionException { /* 0x56800 - 0x56a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x56800: - r4 = r5 + r0; - /* Next insn is delay slot */ - pc=0x5a200; - run_5a200(); return; - case 0x56a00: - pc=0x56a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_56a00() throws ExecutionException { /* 0x56a00 - 0x56c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x56a00: r29 = r29 + -48; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r16; - r16 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r17; - r2 = readPages[(r16+328)>>>12][((r16+328)>>>2)&0x3ff]; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r16; + r16 = readPages[(r28 + -31516) >>> 12][((r28 + -31516) >>> 2) & 0x3ff]; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r17; + r2 = readPages[(r16 + 328) >>> 12][((r16 + 328) >>> 2) & 0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; r17 = r4 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x56b30; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4dd30; continue; } - case 0x56a24: - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; + case 0x4dc24: + r3 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; r8 = r3 < 32 ? 1 : 0; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x56aac; + if (r8 != r0) { + /* Next insn is delay slot */ + pc = 0x4dcac; continue; } r2 = 4 << 16; - r2 = r2 + -6144; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x56a64; + r2 = r2 + 17920; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4dc64; continue; } - case 0x56a48: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; + case 0x4dc48: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; r2 = r0 + -1; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x56a64: + case 0x4dc64: r4 = r0 + 400; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r6; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x56a7c; - pc=0x3e800; - run_3e800(); return; - case 0x56a7c: - r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r6 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r7 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x56a48; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r6; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r7; + /* Next insn is delay slot */ + r31 = 0x4dc7c; + pc = 0x44600; + run_44600(); + return; + case 0x4dc7c: + r5 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r6 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r7 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4dc48; continue; } - r3 = readPages[(r16+328)>>>12][((r16+328)>>>2)&0x3ff]; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - writePages[(r16+328)>>>12][((r16+328)>>>2)&0x3ff] = r2; + r3 = readPages[(r16 + 328) >>> 12][((r16 + 328) >>> 2) & 0x3ff]; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + writePages[(r16 + 328) >>> 12][((r16 + 328) >>> 2) & 0x3ff] = r2; r3 = r0 + r0; - writePages[(r2+392)>>>12][((r2+392)>>>2)&0x3ff] = r0; - writePages[(r2+396)>>>12][((r2+396)>>>2)&0x3ff] = r0; - case 0x56aac: - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x56ae8; + writePages[(r2 + 392) >>> 12][((r2 + 392) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 396) >>> 12][((r2 + 396) >>> 2) & 0x3ff] = r0; + case 0x4dcac: + if (r17 != r0) { + /* Next insn is delay slot */ + pc = 0x4dce8; continue; } - case 0x56ab4: + case 0x4dcb4: r4 = r3 + 1; r3 = r3 + 2; - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r3 = r3 << 2; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r4; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r4; r2 = r2 + r3; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r5; - r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r16 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r5; + r17 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; r2 = r0 + r0; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x56ae8: + case 0x4dce8: r4 = r3 << 2; r4 = r2 + r4; - writePages[(r4+136)>>>12][((r4+136)>>>2)&0x3ff] = r6; - r8 = readPages[(r2+392)>>>12][((r2+392)>>>2)&0x3ff]; + writePages[(r4 + 136) >>> 12][((r4 + 136) >>> 2) & 0x3ff] = r6; + r8 = readPages[(r2 + 392) >>> 12][((r2 + 392) >>> 2) & 0x3ff]; r6 = r0 + 1; - r6 = r6 << (r3&0x1f); + r6 = r6 << (r3 & 0x1f); r8 = r8 | r6; - writePages[(r2+392)>>>12][((r2+392)>>>2)&0x3ff] = r8; - writePages[(r4+264)>>>12][((r4+264)>>>2)&0x3ff] = r7; + writePages[(r2 + 392) >>> 12][((r2 + 392) >>> 2) & 0x3ff] = r8; + writePages[(r4 + 264) >>> 12][((r4 + 264) >>> 2) & 0x3ff] = r7; r4 = r0 + 2; - if(r17 != r4) { - /* Next insn is delay slot */ - pc=0x56ab4; + if (r17 != r4) { + /* Next insn is delay slot */ + pc = 0x4dcb4; continue; } - r4 = readPages[(r2+396)>>>12][((r2+396)>>>2)&0x3ff]; + r4 = readPages[(r2 + 396) >>> 12][((r2 + 396) >>> 2) & 0x3ff]; r6 = r4 | r6; - writePages[(r2+396)>>>12][((r2+396)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x56ab4; + writePages[(r2 + 396) >>> 12][((r2 + 396) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + pc = 0x4dcb4; continue; - case 0x56b30: + case 0x4dd30: r2 = r16 + 332; - writePages[(r16+328)>>>12][((r16+328)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x56a24; + writePages[(r16 + 328) >>> 12][((r16 + 328) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x4dc24; continue; - case 0x56c00: - pc=0x56c00; + case 0x4de00: + pc = 0x4de00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_56c00() throws ExecutionException { /* 0x56c00 - 0x56e00 */ + + private final void run_4de00() throws ExecutionException { /* 0x4de00 - 0x4e000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x56c00: - r2 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x4de00: + r2 = readPages[(r28 + -31516) >>> 12][((r28 + -31516) >>> 2) & 0x3ff]; r29 = r29 + -64; r2 = r2 + 328; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r23; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r4; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r4; r19 = r5 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; r20 = r0 + 1; r21 = r0 + -1; - case 0x56c48: - r2 = readPages[(r28+-31076)>>>12][((r28+-31076)>>>2)&0x3ff]; - r23 = readPages[(r2+328)>>>12][((r2+328)>>>2)&0x3ff]; - if(r23 == r0) { - /* Next insn is delay slot */ - pc=0x56ccc; + case 0x4de48: + r2 = readPages[(r28 + -31516) >>> 12][((r28 + -31516) >>> 2) & 0x3ff]; + r23 = readPages[(r2 + 328) >>> 12][((r2 + 328) >>> 2) & 0x3ff]; + if (r23 == r0) { + /* Next insn is delay slot */ + pc = 0x4decc; continue; } - r30 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - case 0x56c64: - r3 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; + r30 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + case 0x4de64: + r3 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; r16 = r3 + -1; - if(r16 < 0) { - /* Next insn is delay slot */ - pc=0x56cbc; + if (r16 < 0) { + /* Next insn is delay slot */ + pc = 0x4debc; continue; } r18 = r3 + 1; @@ -67313,213 +62389,221 @@ public final class AcmeCrossAssembler extends UnixRuntime { r18 = r18 << 2; r17 = r17 + r4; r18 = r23 + r18; - case 0x56c90: - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x56d00; + case 0x4de90: + if (r19 == r0) { + /* Next insn is delay slot */ + pc = 0x4df00; continue; } - r3 = readPages[(r17+128)>>>12][((r17+128)>>>2)&0x3ff]; - if(r3 == r19) { - /* Next insn is delay slot */ - pc=0x56d00; + r3 = readPages[(r17 + 128) >>> 12][((r17 + 128) >>> 2) & 0x3ff]; + if (r3 == r19) { + /* Next insn is delay slot */ + pc = 0x4df00; continue; } - case 0x56ca8: + case 0x4dea8: r16 = r16 + -1; r17 = r17 + -4; r18 = r18 + -4; - if(r16 != r21) { - /* Next insn is delay slot */ - pc=0x56c90; + if (r16 != r21) { + /* Next insn is delay slot */ + pc = 0x4de90; continue; } - case 0x56cbc: + case 0x4debc: r2 = 4 << 16; - r2 = r2 + -5632; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x56db4; + r2 = r2 + 18432; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4dfb4; continue; } - case 0x56ccc: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + case 0x4decc: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x56d00: - r4 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; - r3 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; + case 0x4df00: + r4 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; + r3 = readPages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff]; r4 = r4 + -1; - if(r4 == r16) { - /* Next insn is delay slot */ - pc=0x56d94; + if (r4 == r16) { + /* Next insn is delay slot */ + pc = 0x4df94; continue; } - writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r0; - case 0x56d18: - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x56ca8; + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r0; + case 0x4df18: + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4dea8; continue; } - r5 = readPages[(r23+392)>>>12][((r23+392)>>>2)&0x3ff]; - r4 = r20 << (r16&0x1f); + r5 = readPages[(r23 + 392) >>> 12][((r23 + 392) >>> 2) & 0x3ff]; + r4 = r20 << (r16 & 0x1f); r5 = r4 & r5; - r22 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x56d84; + r22 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x4df84; continue; } - r5 = readPages[(r23+396)>>>12][((r23+396)>>>2)&0x3ff]; + r5 = readPages[(r23 + 396) >>> 12][((r23 + 396) >>> 2) & 0x3ff]; r4 = r4 & r5; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x56da0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4dfa0; continue; } - r4 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r5 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r3; - r31=0x56d5c; + r4 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r5 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r3; + r31 = 0x4df5c; return; - case 0x56d5c: - r3 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; - if(r3 != r22) { - /* Next insn is delay slot */ - pc=0x56c48; + case 0x4df5c: + r3 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; + if (r3 != r22) { + /* Next insn is delay slot */ + pc = 0x4de48; continue; } - r3 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - if(r3 == r23) { - /* Next insn is delay slot */ - pc=0x56ca8; + r3 = readPages[(r30 + 0) >>> 12][((r30 + 0) >>> 2) & 0x3ff]; + if (r3 == r23) { + /* Next insn is delay slot */ + pc = 0x4dea8; continue; } - /* Next insn is delay slot */ - pc=0x56c48; + /* Next insn is delay slot */ + pc = 0x4de48; continue; - case 0x56d84: - /* Next insn is delay slot */ - pc=r3; - r31=0x56d8c; + case 0x4df84: + /* Next insn is delay slot */ + pc = r3; + r31 = 0x4df8c; return; - case 0x56d8c: - /* Next insn is delay slot */ - pc=0x56d5c; + case 0x4df8c: + /* Next insn is delay slot */ + pc = 0x4df5c; continue; - case 0x56d94: - writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - pc=0x56d18; + case 0x4df94: + writePages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + pc = 0x4df18; continue; - case 0x56da0: - r4 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r3; - r31=0x56dac; + case 0x4dfa0: + r4 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r3; + r31 = 0x4dfac; return; - case 0x56dac: - /* Next insn is delay slot */ - pc=0x56d5c; + case 0x4dfac: + /* Next insn is delay slot */ + pc = 0x4df5c; continue; - case 0x56db4: - r3 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x56dfc; + case 0x4dfb4: + r3 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4dffc; continue; } - r3 = readPages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x56e10; - run_56e00(); return; + r3 = readPages[(r23 + 0) >>> 12][((r23 + 0) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4e010; + run_4e000(); + return; } r4 = r23 + r0; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x56de4; - pc=0x3ea00; - run_3ea00(); return; - case 0x56de4: - r23 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - case 0x56dec: - if(r23 != r0) { - /* Next insn is delay slot */ - pc=0x56c64; + writePages[(r30 + 0) >>> 12][((r30 + 0) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x4dfe4; + pc = 0x44800; + run_44800(); + return; + case 0x4dfe4: + r23 = readPages[(r30 + 0) >>> 12][((r30 + 0) >>> 2) & 0x3ff]; + case 0x4dfec: + if (r23 != r0) { + /* Next insn is delay slot */ + pc = 0x4de64; continue; } - /* Next insn is delay slot */ - pc=0x56ccc; + /* Next insn is delay slot */ + pc = 0x4decc; continue; - case 0x56dfc: - r3 = readPages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff]; - case 0x56e00: - pc=0x56e00; + case 0x4dffc: + r3 = readPages[(r23 + 0) >>> 12][((r23 + 0) >>> 2) & 0x3ff]; + case 0x4e000: + pc = 0x4e000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_56e00() throws ExecutionException { /* 0x56e00 - 0x57000 */ + + private final void run_4e000() throws ExecutionException { /* 0x4e000 - 0x4e200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x56e00: + for (;;) { + switch (pc) { + case 0x4e000: r30 = r23 + r0; r23 = r3 + r0; - /* Next insn is delay slot */ - pc=0x56dec; - run_56c00(); return; - case 0x56e10: - r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x56e00; - continue; - case 0x57000: - pc=0x57000; + /* Next insn is delay slot */ + pc = 0x4dfec; + run_4de00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4e010: + r3 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x4e000; + continue; + case 0x4e200: + pc = 0x4e200; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_57000() throws ExecutionException { /* 0x57000 - 0x57200 */ + + private final void run_4e200() throws ExecutionException { /* 0x4e200 - 0x4e400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x57000: + for (;;) { + switch (pc) { + case 0x4e200: r29 = r29 + -48; - r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - r17 = readPages[(r5+16)>>>12][((r5+16)>>>2)&0x3ff]; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; + r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + r17 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; r2 = r2 < r17 ? 1 : 0; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; r20 = r4 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x57274; - run_57200(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4e474; + run_4e400(); + return; } r17 = r17 + -1; r12 = r17 << 2; @@ -67527,45 +62611,53 @@ public final class AcmeCrossAssembler extends UnixRuntime { r18 = r16 + r12; r19 = r4 + 20; r12 = r19 + r12; - r22 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; - r2 = readPages[(r12+0)>>>12][((r12+0)>>>2)&0x3ff]; + r22 = readPages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r12 + 0) >>> 12][((r12 + 0) >>> 2) & 0x3ff]; r22 = r22 + 1; - if(r22 != r0) { - /* Next insn is delay slot */ - if(r22!=0) { - hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); + if (r22 != r0) { + /* Next insn is delay slot */ + if (r22 != 0) { + hi = (int) ((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); + lo = (int) ((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } - pc=0x5706c; + pc = 0x4e26c; continue; } - if(r22!=0) { - hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); + if (r22 != 0) { + hi = (int) ((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); + lo = (int) ((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); } throw new ExecutionException("Break"); - case 0x5706c: + case 0x4e26c: r22 = lo; r21 = lo; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x57168; + if (r22 == r0) { + /* Next insn is delay slot */ + pc = 0x4e368; continue; } r6 = r16 + r0; r3 = r19 + r0; r4 = r0 + r0; r2 = r0 + r0; - case 0x5708c: + case 0x4e28c: r6 = r6 + 4; - r11 = readPages[(r6+-4)>>>12][((r6+-4)>>>2)&0x3ff]; - r8 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r10 = r11 & 65535; - { long hilo = (r22) * r10; hi = (int) (hilo >>> 32); lo = (int) hilo; } + r11 = readPages[(r6 + -4) >>> 12][((r6 + -4) >>> 2) & 0x3ff]; + r8 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r10 = r11 & 65535; { + long hilo = (long) (r22) * ((long) r10); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r11 = r11 >>> 16; r3 = r3 + 4; r10 = lo; r10 = r4 + r10; - r4 = r10 >>> 16; - { long hilo = (r22) * r11; hi = (int) (hilo >>> 32); lo = (int) hilo; } + r4 = r10 >>> 16; { + long hilo = (long) (r22) * ((long) r11); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r7 = r10 & 65535; r7 = r2 - r7; r11 = lo; @@ -67582,72 +62674,74 @@ public final class AcmeCrossAssembler extends UnixRuntime { r7 = r7 & 65535; r8 = r8 << 16; r7 = r8 | r7; - writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r7; + writePages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff] = r7; r7 = ((r18 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x5708c; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x4e28c; continue; } - r2 = readPages[(r12+0)>>>12][((r12+0)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x57168; + r2 = readPages[(r12 + 0) >>> 12][((r12 + 0) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4e368; continue; } r2 = r12 + -4; r3 = ((r19 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x57164; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4e364; continue; } - r3 = readPages[(r12+-4)>>>12][((r12+-4)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x57150; + r3 = readPages[(r12 + -4) >>> 12][((r12 + -4) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4e350; continue; } - /* Next insn is delay slot */ - pc=0x57164; + /* Next insn is delay slot */ + pc = 0x4e364; continue; - case 0x57140: - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x57164; + case 0x4e340: + r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4e364; continue; } - case 0x57150: + case 0x4e350: r2 = r2 + -4; r3 = ((r19 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; r17 = r17 + -1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x57140; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4e340; continue; } - case 0x57164: - writePages[(r20+16)>>>12][((r20+16)>>>2)&0x3ff] = r17; - case 0x57168: + case 0x4e364: + writePages[(r20 + 16) >>> 12][((r20 + 16) >>> 2) & 0x3ff] = r17; + case 0x4e368: r4 = r20 + r0; - /* Next insn is delay slot */ - r31=0x57174; - pc=0x5ce00; - run_5ce00(); return; - case 0x57174: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x57244; - run_57200(); return; + /* Next insn is delay slot */ + r31 = 0x4e374; + pc = 0x52c00; + run_52c00(); + return; + case 0x4e374: + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4e444; + run_4e400(); + return; } r21 = r22 + 1; r3 = r19 + r0; r8 = r0 + r0; - case 0x57188: + case 0x4e388: r16 = r16 + 4; - r7 = readPages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff]; - r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + r7 = readPages[(r16 + -4) >>> 12][((r16 + -4) >>> 2) & 0x3ff]; + r6 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r5 = r7 & 65535; r2 = r6 & 65535; r5 = r8 - r5; @@ -67662,623 +62756,761 @@ public final class AcmeCrossAssembler extends UnixRuntime { r6 = r6 << 16; r5 = r6 | r5; r3 = r3 + 4; - writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r5; + writePages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff] = r5; r5 = ((r18 & 0xffffffffL) < (r16 & 0xffffffffL)) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x57188; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x4e388; continue; } r3 = r17 << 2; r3 = r19 + r3; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x57244; - run_57200(); return; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4e444; + run_4e400(); + return; } r2 = r3 + -4; r4 = ((r19 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x57240; - run_57200(); return; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4e440; + run_4e400(); + return; } - case 0x57200: - pc=0x57200; + case 0x4e400: + pc = 0x4e400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_57200() throws ExecutionException { /* 0x57200 - 0x57400 */ + + private final void run_4e400() throws ExecutionException { /* 0x4e400 - 0x4e600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x57200: - r3 = readPages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5722c; + for (;;) { + switch (pc) { + case 0x4e400: + r3 = readPages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4e42c; continue; } - /* Next insn is delay slot */ - pc=0x57240; + /* Next insn is delay slot */ + pc = 0x4e440; continue; - case 0x5721c: - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x57240; + case 0x4e41c: + r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4e440; continue; } - case 0x5722c: + case 0x4e42c: r2 = r2 + -4; r3 = ((r19 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; r17 = r17 + -1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5721c; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4e41c; continue; } - case 0x57240: - writePages[(r20+16)>>>12][((r20+16)>>>2)&0x3ff] = r17; - case 0x57244: + case 0x4e440: + writePages[(r20 + 16) >>> 12][((r20 + 16) >>> 2) & 0x3ff] = r17; + case 0x4e444: r2 = r21 + r0; - case 0x57248: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + case 0x4e448: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x57274: + case 0x4e474: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x57248; + /* Next insn is delay slot */ + pc = 0x4e448; continue; - case 0x57400: - pc=0x57400; + case 0x4e600: + pc = 0x4e600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_57400() throws ExecutionException { /* 0x57400 - 0x57600 */ + + private final void run_4e600() throws ExecutionException { /* 0x4e600 - 0x4e800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x57400: - r5 = readPages[(r4+64)>>>12][((r4+64)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x4e600: + r5 = readPages[(r4 + 64) >>> 12][((r4 + 64) >>> 2) & 0x3ff]; r29 = r29 + -128; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r17; - writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r16; - writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r31; - writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r30; - writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = r23; - writePages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff] = r22; - writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = r21; - writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = r20; - writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r19; - writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r18; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = f20; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = f21; + writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 116) >>> 12][((r29 + 116) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 112) >>> 12][((r29 + 112) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 104) >>> 12][((r29 + 104) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 96) >>> 12][((r29 + 96) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 124) >>> 12][((r29 + 124) >>> 2) & 0x3ff] = f20; + writePages[(r29 + 120) >>> 12][((r29 + 120) >>> 2) & 0x3ff] = f21; r16 = r4 + r0; - r17 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r7; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r6; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x57470; + r17 = readPages[(r29 + 156) >>> 12][((r29 + 156) >>> 2) & 0x3ff]; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r7; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r6; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x4e670; continue; } - r2 = readPages[(r4+68)>>>12][((r4+68)>>>2)&0x3ff]; + r2 = readPages[(r4 + 68) >>> 12][((r4 + 68) >>> 2) & 0x3ff]; r3 = r0 + 1; - writePages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff] = r2; - r2 = r3 << (r2&0x1f); - writePages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x5746c; - pc=0x5ba00; - run_5ba00(); return; - case 0x5746c: - writePages[(r16+64)>>>12][((r16+64)>>>2)&0x3ff] = r0; - case 0x57470: - r2 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x5757c; + writePages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff] = r2; + r2 = r3 << (r2 & 0x1f); + writePages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x4e66c; + pc = 0x51a00; + run_51a00(); + return; + case 0x4e66c: + writePages[(r16 + 64) >>> 12][((r16 + 64) >>> 2) & 0x3ff] = r0; + case 0x4e670: + r2 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4e77c; continue; } - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r0; - case 0x57488: + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r0; + case 0x4e688: r2 = 32752 << 16; r3 = r18 & r2; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x57524; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x4e724; continue; } - f20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; + f20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; f0 = r0; - f21 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; + f21 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; f1 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x575a0; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f21 & 0xffffffffL) << 32) | (f20 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x4e7a0; continue; } - r9 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r3 = readPages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff]; + r9 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 160) >>> 12][((r29 + 160) >>> 2) & 0x3ff]; r2 = r0 + 1; - writePages[(r9+0)>>>12][((r9+0)>>>2)&0x3ff] = r2; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x57b6c; - run_57a00(); return; + writePages[(r9 + 0) >>> 12][((r9 + 0) >>> 2) & 0x3ff] = r2; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4ed6c; + run_4ec00(); + return; } - r2 = 7 << 16; - r2 = r2 + 277; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r2 = 7 << 16; - r2 = r2 + 276; - case 0x574e8: - f20 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r31 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; - r30 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; - r23 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; - r22 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - r21 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; - r20 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r19 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r18 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r17 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r16 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - f21 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; + r2 = 5 << 16; + r2 = r2 + 30861; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + r2 = 5 << 16; + r2 = r2 + 30860; + case 0x4e6e8: + f20 = readPages[(r29 + 124) >>> 12][((r29 + 124) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 116) >>> 12][((r29 + 116) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 112) >>> 12][((r29 + 112) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 108) >>> 12][((r29 + 108) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 104) >>> 12][((r29 + 104) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 100) >>> 12][((r29 + 100) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 96) >>> 12][((r29 + 96) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 92) >>> 12][((r29 + 92) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 88) >>> 12][((r29 + 88) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 80) >>> 12][((r29 + 80) >>> 2) & 0x3ff]; + f21 = readPages[(r29 + 120) >>> 12][((r29 + 120) >>> 2) & 0x3ff]; r29 = r29 + 128; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x57524: - r8 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r9 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; + case 0x4e724: + r8 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r9 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; r2 = r0 + 9999; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r2; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x57b0c; - run_57a00(); return; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r2; + if (r9 == r0) { + /* Next insn is delay slot */ + pc = 0x4ed0c; + run_4ec00(); + return; } - case 0x5753c: - r2 = 7 << 16; - r2 = r2 + 2072; - case 0x57544: - r3 = readPages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x574e8; + case 0x4e73c: + r2 = 6 << 16; + r2 = r2 + -26648; + case 0x4e744: + r3 = readPages[(r29 + 160) >>> 12][((r29 + 160) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4e6e8; continue; } - addr=r2+3; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r2 + 3; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x57b30; - run_57a00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4ed30; + run_4ec00(); + return; } r3 = r2 + 3; - case 0x57568: - r8 = readPages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff]; - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x574e8; + case 0x4e768: + r8 = readPages[(r29 + 160) >>> 12][((r29 + 160) >>> 2) & 0x3ff]; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4e6e8; continue; - case 0x5757c: - r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; + case 0x4e77c: + r3 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; r18 = 32767 << 16; r18 = r18 | 65535; r2 = r0 + 1; r18 = r18 & r3; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - /* Next insn is delay slot */ - pc=0x57488; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + /* Next insn is delay slot */ + pc = 0x4e688; continue; - case 0x575a0: + case 0x4e7a0: r2 = r29 + 24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; r7 = f20; r2 = r29 + 28; r6 = f21; r4 = r16 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x575c4; - pc=0x5d600; - run_5d600(); return; - case 0x575c4: + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x4e7c4; + pc = 0x53000; + run_53000(); + return; + case 0x4e7c4: r4 = r18 >>> 20; r17 = r2 + r0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x57b3c; - run_57a00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4ed3c; + run_4ec00(); + return; } - r5 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + r5 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r4 = r5 + r4; r2 = r4 < -1041 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x581f0; - run_58000(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4f3f0; + run_4f200(); + return; } r2 = r0 + -1010; r2 = r2 - r4; - r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = r18 << (r2&0x1f); - case 0x57600: - pc=0x57600; + r6 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = r18 << (r2 & 0x1f); + case 0x4e800: + pc = 0x4e800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_57600() throws ExecutionException { /* 0x57600 - 0x57800 */ + + private final void run_4e800() throws ExecutionException { /* 0x4e800 - 0x4ea00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x57600: + for (;;) { + switch (pc) { + case 0x4e800: r2 = r4 + 1042; - r2 = r6 >>> (r2&0x1f); + r2 = r6 >>> (r2 & 0x1f); r18 = r18 | r2; - case 0x5760c: - f0 = r18; - { long l = Double.doubleToLongBits(((double)f0)); f3 = (int)(l >>> 32); f2 = (int)l; } - if(r18 < 0) { - /* Next insn is delay slot */ - pc=0x58798; - run_58600(); return; + case 0x4e80c: + f0 = r18; { + long l = Double.doubleToLongBits(((double) f0)); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + if (r18 < 0) { + /* Next insn is delay slot */ + pc = 0x4f998; + run_4f800(); + return; } - case 0x57620: + case 0x4e820: r2 = f3; r6 = 65040 << 16; r3 = f2; r2 = r6 + r2; r4 = r4 + -1; r19 = r0 + 1; - case 0x57638: + case 0x4e838: f4 = r3; - f0 = readPages[(r28+-31044)>>>12][((r28+-31044)>>>2)&0x3ff]; + f0 = readPages[(r28 + -31484) >>> 12][((r28 + -31484) >>> 2) & 0x3ff]; f5 = r2; - f1 = readPages[(r28+-31048)>>>12][((r28+-31048)>>>2)&0x3ff]; - f6 = r4; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f0 = readPages[(r28+-31036)>>>12][((r28+-31036)>>>2)&0x3ff]; - f1 = readPages[(r28+-31040)>>>12][((r28+-31040)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f0 = readPages[(r28+-31028)>>>12][((r28+-31028)>>>2)&0x3ff]; - f1 = readPages[(r28+-31032)>>>12][((r28+-31032)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f0 = readPages[(r28+-31020)>>>12][((r28+-31020)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits(((double)f6)); f3 = (int)(l >>> 32); f2 = (int)l; } - f1 = readPages[(r28+-31024)>>>12][((r28+-31024)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + f1 = readPages[(r28 + -31488) >>> 12][((r28 + -31488) >>> 2) & 0x3ff]; + f6 = r4; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f0 = readPages[(r28 + -31476) >>> 12][((r28 + -31476) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -31480) >>> 12][((r28 + -31480) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f0 = readPages[(r28 + -31468) >>> 12][((r28 + -31468) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -31472) >>> 12][((r28 + -31472) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f0 = readPages[(r28 + -31460) >>> 12][((r28 + -31460) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits(((double) f6)); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f1 = readPages[(r28 + -31464) >>> 12][((r28 + -31464) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r2 = fcsr; r2 = fcsr; r1 = r2 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f0 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f0 = (int)(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL))); break; // Round towards zero - case 2: f0 = (int)Math.ceil((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards plus infinity - case 3: f0 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f0 = (int) Math.floor( + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f0 = (int) (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))); + break; // Round towards zero + case 2: + f0 = (int) Math + .ceil((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f0 = (int) Math + .floor((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + break; // Round towards minus infinity } fcsr = r2; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = f0; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = f0; f0 = r0; f1 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x58184; - run_58000(); return; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) < (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4f384; + run_4f200(); + return; } - case 0x576dc: - r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r2 = (r8&0xffffffffL) < (23&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5814c; - run_58000(); return; + case 0x4e8dc: + r8 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = (r8 & 0xffffffffL) < (23 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4f34c; + run_4f200(); + return; } - r3 = 7 << 16; + r3 = 6 << 16; r2 = r8 << 3; - r3 = r3 + 2176; + r3 = r3 + -26584; r2 = r2 + r3; - f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - f2 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - f3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x58208; - run_58200(); return; + f0 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + f2 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f1 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + f3 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) < (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x4f408; + run_4f400(); + return; } r8 = r8 + -1; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r8; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; - case 0x57730: + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r8; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r0; + case 0x4e930: r4 = r5 - r4; r23 = r4 + -1; - if(r23 < 0) { - /* Next insn is delay slot */ - pc=0x58174; - run_58000(); return; + if (r23 < 0) { + /* Next insn is delay slot */ + pc = 0x4f374; + run_4f200(); + return; } r18 = r0 + r0; - case 0x57744: - r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - if(r8 < 0) { - /* Next insn is delay slot */ - pc=0x5815c; - run_58000(); return; + case 0x4e944: + r8 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + if (r8 < 0) { + /* Next insn is delay slot */ + pc = 0x4f35c; + run_4f200(); + return; } r23 = r23 + r8; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r8; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r8; r22 = r0 + r0; - case 0x57760: - r3 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; - r2 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x57b7c; - run_57a00(); return; + case 0x4e960: + r3 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; + r2 = (r3 & 0xffffffffL) < (10 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4ed7c; + run_4ec00(); + return; } r2 = r3 < 6 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x58bf8; - run_58a00(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4fdf8; + run_4fc00(); + return; } r3 = r3 + -4; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r3; + writePages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff] = r3; r8 = r0 + r0; - case 0x5778c: - r9 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; + case 0x4e98c: + r9 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; r2 = r0 + 3; - if(r9 == r2) { - /* Next insn is delay slot */ - pc=0x587b4; - run_58600(); return; + if (r9 == r2) { + /* Next insn is delay slot */ + pc = 0x4f9b4; + run_4f800(); + return; } r2 = r9 < 4 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5862c; - run_58600(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4f82c; + run_4f800(); + return; } - r3 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; + r3 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; r2 = r0 + 4; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x583fc; - run_58200(); return; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x4f5fc; + run_4f400(); + return; } r2 = r0 + 5; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x57b80; - run_57a00(); return; + if (r3 != r2) { + /* Next insn is delay slot */ + pc = 0x4ed80; + run_4ec00(); + return; } r3 = r0 + 1; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r3; - case 0x577cc: - r9 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r3 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r3; + case 0x4e9cc: + r9 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r9 = r9 + r3; r30 = r9 + 1; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r9; - if(r30 <= 0) { - /* Next insn is delay slot */ - pc=0x58818; - run_58800(); return; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r9; + if (r30 <= 0) { + /* Next insn is delay slot */ + pc = 0x4fa18; + run_4fa00(); + return; } r6 = r30 + r0; - case 0x577f0: - r2 = (r6&0xffffffffL) < (24&0xffffffffL) ? 1 : 0; - writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x58c04; - run_58c00(); return; + case 0x4e9f0: + r2 = (r6 & 0xffffffffL) < (24 & 0xffffffffL) ? 1 : 0; + writePages[(r16 + 68) >>> 12][((r16 + 68) >>> 2) & 0x3ff] = r0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4fe04; + run_4fe00(); + return; } - case 0x57800: - pc=0x57800; + case 0x4ea00: + pc = 0x4ea00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_57800() throws ExecutionException { /* 0x57800 - 0x57a00 */ + + private final void run_4ea00() throws ExecutionException { /* 0x4ea00 - 0x4ec00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x57800: + for (;;) { + switch (pc) { + case 0x4ea00: r3 = r0 + 1; r2 = r0 + 4; - case 0x57808: + case 0x4ea08: r2 = r2 << 1; r4 = r2 + 20; r4 = ((r6 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; r5 = r3 + r0; r3 = r3 + 1; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x57808; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4ea08; continue; } - writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r5; + writePages[(r16 + 68) >>> 12][((r16 + 68) >>> 2) & 0x3ff] = r5; r21 = r6 + r0; - case 0x5782c: + case 0x4ea2c: r4 = r16 + r0; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r8; - r21 = (r21&0xffffffffL) < (15&0xffffffffL) ? 1 : 0; - /* Next insn is delay slot */ - r31=0x57840; - pc=0x5b800; - run_5b800(); return; - case 0x57840: + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r8; + r21 = (r21 & 0xffffffffL) < (15 & 0xffffffffL) ? 1 : 0; + /* Next insn is delay slot */ + r31 = 0x4ea40; + pc = 0x51800; + run_51800(); + return; + case 0x4ea40: r20 = r2 + r0; - writePages[(r16+64)>>>12][((r16+64)>>>2)&0x3ff] = r2; - r8 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x57bb4; - run_57a00(); return; + writePages[(r16 + 64) >>> 12][((r16 + 64) >>> 2) & 0x3ff] = r2; + r8 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + if (r21 == r0) { + /* Next insn is delay slot */ + pc = 0x4edb4; + run_4ec00(); + return; } - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x57bb4; - run_57a00(); return; + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x4edb4; + run_4ec00(); + return; } - f8 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f9 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - if(r8 <= 0) { - /* Next insn is delay slot */ - pc=0x5882c; - run_58800(); return; + f8 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r8 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + f9 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + if (r8 <= 0) { + /* Next insn is delay slot */ + pc = 0x4fa2c; + run_4fa00(); + return; } r3 = r8 & 15; - r2 = 7 << 16; + r2 = 6 << 16; r3 = r3 << 3; - r2 = r2 + 2176; + r2 = r2 + -26584; r2 = r3 + r2; - f2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - f3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; + f2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + f3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; r2 = r8 >> 4; r3 = r2 & 16; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x587e0; - run_58600(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4f9e0; + run_4f800(); + return; } - r3 = 7 << 16; - f0 = readPages[(r3+2172)>>>12][((r3+2172)>>>2)&0x3ff]; + r3 = 6 << 16; + f0 = readPages[(r3 + -26588) >>> 12][((r3 + -26588) >>> 2) & 0x3ff]; r2 = r2 & 15; - f1 = readPages[(r3+2168)>>>12][((r3+2168)>>>2)&0x3ff]; - r8 = r0 + 3; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - case 0x578b8: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x578f8; + f1 = readPages[(r3 + -26592) >>> 12][((r3 + -26592) >>> 2) & 0x3ff]; + r8 = r0 + 3; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + / (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + case 0x4eab8: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4eaf8; continue; } - r3 = 7 << 16; - r3 = r3 + 2136; - case 0x578c8: + r3 = 6 << 16; + r3 = r3 + -26624; + case 0x4eac8: r4 = r2 & 1; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x578e8; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4eae8; continue; } - f4 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; + f4 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; r8 = r8 + 1; - f5 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - case 0x578e8: + f5 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + case 0x4eae8: r2 = r2 >> 1; r3 = r3 + 8; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x578c8; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4eac8; continue; } - case 0x578f8: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - case 0x578fc: - r3 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5792c; + case 0x4eaf8: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + / (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + case 0x4eafc: + r3 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4eb2c; continue; } - f2 = readPages[(r28+-31012)>>>12][((r28+-31012)>>>2)&0x3ff]; - f3 = readPages[(r28+-31016)>>>12][((r28+-31016)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x58ab4; - run_58a00(); return; + f2 = readPages[(r28 + -31452) >>> 12][((r28 + -31452) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31456) >>> 12][((r28 + -31456) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) < (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4fcb4; + run_4fc00(); + return; } - case 0x5792c: + case 0x4eb2c: f4 = r8; - r2 = 64704 << 16; - { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f2 = readPages[(r28+-30996)>>>12][((r28+-30996)>>>2)&0x3ff]; - f3 = readPages[(r28+-31000)>>>12][((r28+-31000)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } + r2 = 64704 << 16; { + long l = Double.doubleToLongBits(((double) f4)); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f2 = readPages[(r28 + -31436) >>> 12][((r28 + -31436) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31440) >>> 12][((r28 + -31440) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } r8 = f7; r9 = f6; r8 = r2 + r8; - if(r30 == r0) { - /* Next insn is delay slot */ - pc=0x58700; - run_58600(); return; + if (r30 == r0) { + /* Next insn is delay slot */ + pc = 0x4f900; + run_4f800(); + return; } - r2 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + r2 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r4 = r30 + r0; - case 0x5796c: - r3 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; + case 0x4eb6c: + r3 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; r5 = r4 + -1; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x58974; - run_58800(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4fb74; + run_4fa00(); + return; } - r3 = 7 << 16; + r3 = 6 << 16; r5 = r5 << 3; - r3 = r3 + 2176; + r3 = r3 + -26584; r3 = r5 + r3; - f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - f4 = readPages[(r28+-30980)>>>12][((r28+-30980)>>>2)&0x3ff]; - f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - f5 = readPages[(r28+-30984)>>>12][((r28+-30984)>>>2)&0x3ff]; + f2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; + f4 = readPages[(r28 + -31420) >>> 12][((r28 + -31420) >>> 2) & 0x3ff]; + f3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + f5 = readPages[(r28 + -31424) >>> 12][((r28 + -31424) >>> 2) & 0x3ff]; r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f6 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f6 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f6 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f6 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f6 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f6 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f6 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f6 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity } - fcsr = r6; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + fcsr = r6; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + / (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } f4 = r9; r7 = f6; f5 = r8; @@ -68286,149 +63518,226 @@ public final class AcmeCrossAssembler extends UnixRuntime { r5 = r5 << 24; r5 = r5 >> 24; r3 = r20 + 1; - addr=r20+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits(((double)f6)); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x57ac0; - run_57a00(); return; + addr = r20 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double.doubleToLongBits(((double) f6)); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) < (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4ecc0; + run_4ec00(); + return; } - case 0x57a00: - pc=0x57a00; + case 0x4ec00: + pc = 0x4ec00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_57a00() throws ExecutionException { /* 0x57a00 - 0x57c00 */ + + private final void run_4ec00() throws ExecutionException { /* 0x4ec00 - 0x4ee00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x57a00: - f10 = readPages[(r28+-31012)>>>12][((r28+-31012)>>>2)&0x3ff]; - f11 = readPages[(r28+-31016)>>>12][((r28+-31016)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x58b80; - run_58a00(); return; + for (;;) { + switch (pc) { + case 0x4ec00: + f10 = readPages[(r28 + -31452) >>> 12][((r28 + -31452) >>> 2) & 0x3ff]; + f11 = readPages[(r28 + -31456) >>> 12][((r28 + -31456) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) < (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4fd80; + run_4fc00(); + return; } r5 = r4 < 2 ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x58768; - run_58600(); return; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x4f968; + run_4f800(); + return; } - f6 = readPages[(r28+-31004)>>>12][((r28+-31004)>>>2)&0x3ff]; + f6 = readPages[(r28 + -31444) >>> 12][((r28 + -31444) >>> 2) & 0x3ff]; r4 = r20 + r4; - f7 = readPages[(r28+-31008)>>>12][((r28+-31008)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x57a64; + f7 = readPages[(r28 + -31448) >>> 12][((r28 + -31448) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4ec64; continue; - case 0x57a48: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x58b80; - run_58a00(); return; + case 0x4ec48: { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) < (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4fd80; + run_4fc00(); + return; } - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x58768; - run_58600(); return; + if (r3 == r4) { + /* Next insn is delay slot */ + pc = 0x4f968; + run_4f800(); + return; } - case 0x57a64: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } + case 0x4ec64: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r3 = r3 + 1; r8 = fcsr; r8 = fcsr; r1 = r8 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f12 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f12 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f12 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f12 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f12 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f12 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f12 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f12 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity } - fcsr = r8; - { long l = Double.doubleToLongBits(((double)f12)); f5 = (int)(l >>> 32); f4 = (int)l; } - r9 = f12; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + fcsr = r8; { + long l = Double.doubleToLongBits(((double) f12)); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + r9 = f12; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r5 = r9 + 48; r5 = r5 << 24; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) < (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); r5 = r5 >> 24; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x57a48; + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x4ec48; continue; } - case 0x57ac0: - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r2; - case 0x57ac4: + case 0x4ecc0: + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r2; + case 0x4ecc4: r4 = r16 + r0; r5 = r17 + r0; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x57ad8; - pc=0x5ba00; - run_5ba00(); return; - case 0x57ad8: - r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x4ecd8; + pc = 0x51a00; + run_51a00(); + return; + case 0x4ecd8: + r8 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; r2 = r8 + 1; - r9 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r8 = readPages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r9+0)>>>12][((r9+0)>>>2)&0x3ff] = r2; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x58620; - run_58600(); return; + r9 = readPages[(r29 + 152) >>> 12][((r29 + 152) >>> 2) & 0x3ff]; + r8 = readPages[(r29 + 160) >>> 12][((r29 + 160) >>> 2) & 0x3ff]; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r0 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r9 + 0) >>> 12][((r9 + 0) >>> 2) & 0x3ff] = r2; + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x4f820; + run_4f800(); + return; } - writePages[(r8+0)>>>12][((r8+0)>>>2)&0x3ff] = r3; + writePages[(r8 + 0) >>> 12][((r8 + 0) >>> 2) & 0x3ff] = r3; r2 = r20 + r0; - /* Next insn is delay slot */ - pc=0x574e8; - run_57400(); return; - case 0x57b0c: + /* Next insn is delay slot */ + pc = 0x4e6e8; + run_4e600(); + return; + case 0x4ed0c: r2 = 15 << 16; r2 = r2 | 65535; r18 = r18 & r2; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x5753c; - run_57400(); return; + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x4e73c; + run_4e600(); + return; } - r2 = 7 << 16; - r2 = r2 + 2060; - /* Next insn is delay slot */ - pc=0x57544; - run_57400(); return; - case 0x57b30: + r2 = 6 << 16; + r2 = r2 + -26660; + /* Next insn is delay slot */ + pc = 0x4e744; + run_4e600(); + return; + case 0x4ed30: r3 = r2 + 8; - /* Next insn is delay slot */ - pc=0x57568; - run_57400(); return; - case 0x57b3c: + /* Next insn is delay slot */ + pc = 0x4e768; + run_4e600(); + return; + case 0x4ed3c: r2 = f21; r6 = 15 << 16; r6 = r6 | 65535; @@ -68437,2783 +63746,2920 @@ public final class AcmeCrossAssembler extends UnixRuntime { r2 = r6 | r5; r3 = f20; r4 = r4 + -1023; - r5 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + r5 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r19 = r0 + r0; - /* Next insn is delay slot */ - pc=0x57638; - run_57600(); return; - case 0x57b6c: - r2 = 7 << 16; - r2 = r2 + 276; - /* Next insn is delay slot */ - pc=0x574e8; - run_57400(); return; - case 0x57b7c: - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r0; - case 0x57b80: - writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4e838; + run_4e800(); + return; + case 0x4ed6c: + r2 = 5 << 16; + r2 = r2 + 30860; + /* Next insn is delay slot */ + pc = 0x4e6e8; + run_4e600(); + return; + case 0x4ed7c: + writePages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff] = r0; + case 0x4ed80: + writePages[(r16 + 68) >>> 12][((r16 + 68) >>> 2) & 0x3ff] = r0; r4 = r16 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x57b94; - pc=0x5b800; - run_5b800(); return; - case 0x57b94: + /* Next insn is delay slot */ + r31 = 0x4ed94; + pc = 0x51800; + run_51800(); + return; + case 0x4ed94: r8 = r0 + -1; r9 = r0 + 1; r20 = r2 + r0; - writePages[(r16+64)>>>12][((r16+64)>>>2)&0x3ff] = r2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r0; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r8; + writePages[(r16 + 64) >>> 12][((r16 + 64) >>> 2) & 0x3ff] = r2; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r0; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r8; r30 = r0 + -1; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r9; - case 0x57bb4: - r2 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x57d7c; - run_57c00(); return; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r9; + case 0x4edb4: + r2 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x4ef7c; + run_4ee00(); + return; } - r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + r8 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r3 = r8 < 15 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x57d7c; - run_57c00(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x4ef7c; + run_4ee00(); + return; } - r3 = 7 << 16; + r3 = 6 << 16; r2 = r8 << 3; - r3 = r3 + 2176; + r3 = r3 + -26584; r2 = r2 + r3; - f2 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r9 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - f3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r9 < 0) { - /* Next insn is delay slot */ - pc=0x58428; - run_58400(); return; + f2 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + r9 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + f3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + if (r9 < 0) { + /* Next insn is delay slot */ + pc = 0x4f628; + run_4f600(); + return; } - case 0x57bfc: - f6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - case 0x57c00: - pc=0x57c00; + case 0x4edfc: + f6 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + case 0x4ee00: + pc = 0x4ee00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_57c00() throws ExecutionException { /* 0x57c00 - 0x57e00 */ + + private final void run_4ee00() throws ExecutionException { /* 0x4ee00 - 0x4f000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x57c00: - f7 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + for (;;) { + switch (pc) { + case 0x4ee00: + f7 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + / (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } r2 = fcsr; r2 = fcsr; r1 = r2 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f10 = (int)Math.floor((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f10 = (int)(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL))); break; // Round towards zero - case 2: f10 = (int)Math.ceil((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); break; // Round towards plus infinity - case 3: f10 = (int)Math.floor((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f10 = (int) Math.floor( + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f10 = (int) (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))); + break; // Round towards zero + case 2: + f10 = (int) Math + .ceil((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f10 = (int) Math + .floor((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + break; // Round towards minus infinity } - fcsr = r2; - { long l = Double.doubleToLongBits(((double)f10)); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + fcsr = r2; { + long l = Double.doubleToLongBits(((double) f10)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r4 = f10; r3 = r20 + 1; r2 = r4 + 48; - addr=r20+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 + 1; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - if(r30 == r2) { - /* Next insn is delay slot */ - pc=0x57d00; + addr = r20 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = r0 + 1; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL))) + - (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + if (r30 == r2) { + /* Next insn is delay slot */ + pc = 0x4ef00; continue; } - f6 = readPages[(r28+-31004)>>>12][((r28+-31004)>>>2)&0x3ff]; + f6 = readPages[(r28 + -31444) >>> 12][((r28 + -31444) >>> 2) & 0x3ff]; f8 = r0; - f7 = readPages[(r28+-31008)>>>12][((r28+-31008)>>>2)&0x3ff]; - f9 = r0; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x57ac4; - run_57a00(); return; + f7 = readPages[(r28 + -31448) >>> 12][((r28 + -31448) >>> 2) & 0x3ff]; + f9 = r0; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) == (Double + .longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4ecc4; + run_4ec00(); + return; } r2 = r20 + 2; r30 = r20 + r30; - /* Next insn is delay slot */ - pc=0x57cac; + /* Next insn is delay slot */ + pc = 0x4eeac; continue; - case 0x57c94: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + case 0x4ee94: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r2 = r2 + 1; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x57ac4; - run_57a00(); return; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) == (Double + .longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4ecc4; + run_4ec00(); + return; } - case 0x57cac: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))/(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + case 0x4eeac: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + / (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } r3 = r2 + r0; r4 = fcsr; r4 = fcsr; r1 = r4 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f10 = (int)Math.floor((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f10 = (int)(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL))); break; // Round towards zero - case 2: f10 = (int)Math.ceil((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); break; // Round towards plus infinity - case 3: f10 = (int)Math.floor((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f10 = (int) Math.floor( + (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f10 = (int) (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))); + break; // Round towards zero + case 2: + f10 = (int) Math + .ceil((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f10 = (int) Math + .floor((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + break; // Round towards minus infinity } - fcsr = r4; - { long l = Double.doubleToLongBits(((double)f10)); f5 = (int)(l >>> 32); f4 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } + fcsr = r4; { + long l = Double.doubleToLongBits(((double) f10)); + f5 = (int) (l >>> 32); + f4 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } r5 = f10; r4 = r5 + 48; - addr=r2+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - if(r2 != r30) { - /* Next insn is delay slot */ - pc=0x57c94; + addr = r2 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + if (r2 != r30) { + /* Next insn is delay slot */ + pc = 0x4ee94; continue; } - case 0x57d00: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x57d38; + case 0x4ef00: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) < (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4ef38; continue; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x57ac4; - run_57a00(); return; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) == (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x4ecc4; + run_4ec00(); + return; } r4 = f10; r2 = r4 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x57ac4; - run_57a00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4ecc4; + run_4ec00(); + return; } - case 0x57d38: - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x4ef38: + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r5 = tmp; - case 0x57d3c: + case 0x4ef3c: r4 = r0 + 57; - /* Next insn is delay slot */ - pc=0x57d58; + /* Next insn is delay slot */ + pc = 0x4ef58; continue; - case 0x57d48: - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x588b4; - run_58800(); return; + case 0x4ef48: + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x4fab4; + run_4fa00(); + return; } - addr=r2+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r2 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r5 = tmp; r3 = r2 + r0; - case 0x57d58: + case 0x4ef58: r2 = r3 + -1; - if(r5 == r4) { - /* Next insn is delay slot */ - pc=0x57d48; + if (r5 == r4) { + /* Next insn is delay slot */ + pc = 0x4ef48; continue; } r4 = r5 + 1; r4 = r4 << 24; r4 = r4 >> 24; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x57ac4; - run_57a00(); return; - case 0x57d7c: - r8 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x581b8; - run_58000(); return; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x4ecc4; + run_4ec00(); + return; + case 0x4ef7c: + r8 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x4f3b8; + run_4f200(); + return; } - r9 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; + r9 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; r9 = r9 < 2 ? 1 : 0; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r9; - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x584fc; - run_58400(); return; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r9; + if (r9 != r0) { + /* Next insn is delay slot */ + pc = 0x4f6fc; + run_4f600(); + return; } r3 = r30 + -1; r2 = r22 < r3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x587c0; - run_58600(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4f9c0; + run_4f800(); + return; } r3 = r22 - r3; - case 0x57db8: - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x58a78; - run_58a00(); return; + case 0x4efb8: + if (r30 < 0) { + /* Next insn is delay slot */ + pc = 0x4fc78; + run_4fc00(); + return; } r21 = r18 + r0; r2 = r30 + r0; - case 0x57dc8: + case 0x4efc8: r4 = r16 + r0; r5 = r0 + 1; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r3; r18 = r18 + r2; r23 = r23 + r2; - /* Next insn is delay slot */ - r31=0x57de4; - pc=0x5c400; - run_5c400(); return; - case 0x57de4: - r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x4efe4; + pc = 0x52200; + run_52200(); + return; + case 0x4efe4: + r3 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; r19 = r2 + r0; - case 0x57dec: - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x57e18; - run_57e00(); return; + case 0x4efec: + if (r21 == r0) { + /* Next insn is delay slot */ + pc = 0x4f018; + run_4f000(); + return; } - if(r23 <= 0) { - /* Next insn is delay slot */ - pc=0x57e18; - run_57e00(); return; + if (r23 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f018; + run_4f000(); + return; } r4 = r21 < r23 ? 1 : 0; - case 0x57e00: - pc=0x57e00; + case 0x4f000: + pc = 0x4f000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_57e00() throws ExecutionException { /* 0x57e00 - 0x58000 */ + + private final void run_4f000() throws ExecutionException { /* 0x4f000 - 0x4f200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x57e00: + for (;;) { + switch (pc) { + case 0x4f000: r2 = r23 + r0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x583f0; - run_58200(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4f5f0; + run_4f400(); + return; } - case 0x57e0c: + case 0x4f00c: r18 = r18 - r2; r21 = r21 - r2; r23 = r23 - r2; - case 0x57e18: - if(r22 <= 0) { - /* Next insn is delay slot */ - pc=0x57e94; + case 0x4f018: + if (r22 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f094; continue; } - r9 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x58778; - run_58600(); return; + r9 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + if (r9 == r0) { + /* Next insn is delay slot */ + pc = 0x4f978; + run_4f800(); + return; } - if(r3 <= 0) { - /* Next insn is delay slot */ - pc=0x57e88; + if (r3 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f088; continue; } r6 = r3 + r0; r5 = r19 + r0; r4 = r16 + r0; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x57e50; - pc=0x5ca00; - run_5ca00(); return; - case 0x57e50: + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x4f050; + pc = 0x52800; + run_52800(); + return; + case 0x4f050: r5 = r2 + r0; r6 = r17 + r0; r4 = r16 + r0; r19 = r2 + r0; - /* Next insn is delay slot */ - r31=0x57e68; - pc=0x5c600; - run_5c600(); return; - case 0x57e68: + /* Next insn is delay slot */ + r31 = 0x4f068; + pc = 0x52400; + run_52400(); + return; + case 0x4f068: r5 = r17 + r0; r4 = r16 + r0; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x57e7c; - pc=0x5ba00; - run_5ba00(); return; - case 0x57e7c: - r2 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x4f07c; + pc = 0x51a00; + run_51a00(); + return; + case 0x4f07c: + r2 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; r17 = r2 + r0; - case 0x57e88: + case 0x4f088: r6 = r22 - r3; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x584a4; - run_58400(); return; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x4f6a4; + run_4f600(); + return; } - case 0x57e94: + case 0x4f094: r4 = r16 + r0; r5 = r0 + 1; - /* Next insn is delay slot */ - r31=0x57ea4; - pc=0x5c400; - run_5c400(); return; - case 0x57ea4: - r3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x4f0a4; + pc = 0x52200; + run_52200(); + return; + case 0x4f0a4: + r3 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; r22 = r2 + r0; - if(r3 <= 0) { - /* Next insn is delay slot */ - pc=0x57ecc; + if (r3 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f0cc; continue; } r4 = r16 + r0; r5 = r2 + r0; r6 = r3 + r0; - /* Next insn is delay slot */ - r31=0x57ec8; - pc=0x5ca00; - run_5ca00(); return; - case 0x57ec8: + /* Next insn is delay slot */ + r31 = 0x4f0c8; + pc = 0x52800; + run_52800(); + return; + case 0x4f0c8: r22 = r2 + r0; - case 0x57ecc: - r7 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x583a0; - run_58200(); return; + case 0x4f0cc: + r7 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x4f5a0; + run_4f400(); + return; } - case 0x57edc: - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r0; - case 0x57ee0: - r7 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x585f0; - run_58400(); return; + case 0x4f0dc: + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r0; + case 0x4f0e0: + r7 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x4f7f0; + run_4f600(); + return; } r2 = r0 + 1; - case 0x57ef4: + case 0x4f0f4: r2 = r2 + r23; r2 = r2 & 31; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x581d8; - run_58000(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4f3d8; + run_4f200(); + return; } r3 = r0 + 32; r3 = r3 - r2; r4 = r3 < 5 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x58bdc; - run_58a00(); return; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x4fddc; + run_4fc00(); + return; } r3 = r0 + 28; r2 = r3 - r2; r18 = r18 + r2; r21 = r21 + r2; r23 = r23 + r2; - case 0x57f2c: - if(r18 <= 0) { - /* Next insn is delay slot */ - pc=0x57f4c; + case 0x4f12c: + if (r18 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f14c; continue; } r5 = r17 + r0; r4 = r16 + r0; r6 = r18 + r0; - /* Next insn is delay slot */ - r31=0x57f48; - pc=0x5cc00; - run_5cc00(); return; - case 0x57f48: + /* Next insn is delay slot */ + r31 = 0x4f148; + pc = 0x52a00; + run_52a00(); + return; + case 0x4f148: r17 = r2 + r0; - case 0x57f4c: - if(r23 <= 0) { - /* Next insn is delay slot */ - pc=0x57f6c; + case 0x4f14c: + if (r23 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f16c; continue; } r5 = r22 + r0; r4 = r16 + r0; r6 = r23 + r0; - /* Next insn is delay slot */ - r31=0x57f68; - pc=0x5cc00; - run_5cc00(); return; - case 0x57f68: + /* Next insn is delay slot */ + r31 = 0x4f168; + pc = 0x52a00; + run_52a00(); + return; + case 0x4f168: r22 = r2 + r0; - case 0x57f6c: - r8 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x58348; - run_58200(); return; + case 0x4f16c: + r8 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + if (r8 != r0) { + /* Next insn is delay slot */ + pc = 0x4f548; + run_4f400(); + return; } - case 0x57f7c: - if(r30 <= 0) { - /* Next insn is delay slot */ - pc=0x58644; - run_58600(); return; + case 0x4f17c: + if (r30 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f844; + run_4f800(); + return; } - case 0x57f84: - r9 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x58214; - run_58200(); return; + case 0x4f184: + r9 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + if (r9 == r0) { + /* Next insn is delay slot */ + pc = 0x4f414; + run_4f400(); + return; } - if(r21 <= 0) { - /* Next insn is delay slot */ - pc=0x57fb4; + if (r21 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f1b4; continue; } r5 = r19 + r0; r4 = r16 + r0; r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x57fb0; - pc=0x5cc00; - run_5cc00(); return; - case 0x57fb0: + /* Next insn is delay slot */ + r31 = 0x4f1b0; + pc = 0x52a00; + run_52a00(); + return; + case 0x4f1b0: r19 = r2 + r0; - case 0x57fb4: - r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x588d8; - run_58800(); return; + case 0x4f1b4: + r3 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4fad8; + run_4fa00(); + return; } r21 = r19 + r0; - case 0x57fc8: - r8 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; + case 0x4f1c8: + r8 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; r30 = r20 + r30; r8 = r8 & 1; r18 = r20 + 1; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r8; - case 0x57fe0: + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r8; + case 0x4f1e0: r9 = r18 + -1; r4 = r17 + r0; r5 = r22 + r0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r9; - /* Next insn is delay slot */ - r31=0x57ff8; - pc=0x57000; - run_57000(); return; - case 0x57ff8: + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r9; + /* Next insn is delay slot */ + r31 = 0x4f1f8; + pc = 0x4e200; + run_4e200(); + return; + case 0x4f1f8: r4 = r17 + r0; r5 = r19 + r0; - case 0x58000: - pc=0x58000; + case 0x4f200: + pc = 0x4f200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_58000() throws ExecutionException { /* 0x58000 - 0x58200 */ + + private final void run_4f200() throws ExecutionException { /* 0x4f200 - 0x4f400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x58000: - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; + for (;;) { + switch (pc) { + case 0x4f200: + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r2; r23 = r2 + 48; - /* Next insn is delay slot */ - r31=0x58010; - pc=0x5ce00; - run_5ce00(); return; - case 0x58010: + /* Next insn is delay slot */ + r31 = 0x4f210; + pc = 0x52c00; + run_52c00(); + return; + case 0x4f210: r4 = r16 + r0; r5 = r22 + r0; r6 = r21 + r0; r30 = r2 + r0; - /* Next insn is delay slot */ - r31=0x58028; - pc=0x5d000; - run_5d000(); return; - case 0x58028: + /* Next insn is delay slot */ + r31 = 0x4f228; + pc = 0x52e00; + run_52e00(); + return; + case 0x4f228: r3 = r2 + r0; - r2 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x585d4; - run_58400(); return; + r2 = readPages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4f7d4; + run_4f600(); + return; } r5 = r3 + r0; r4 = r17 + r0; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x58050; - pc=0x5ce00; - run_5ce00(); return; - case 0x58050: - r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x4f250; + pc = 0x52c00; + run_52c00(); + return; + case 0x4f250: + r3 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; r4 = r16 + r0; r5 = r3 + r0; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x58068; - pc=0x5ba00; - run_5ba00(); return; - case 0x58068: - r2 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x58098; + writePages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + r31 = 0x4f268; + pc = 0x51a00; + run_51a00(); + return; + case 0x4f268: + r2 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4f298; continue; } - r3 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x58098; + r3 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4f298; continue; } - r8 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x58590; - run_58400(); return; + r8 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x4f790; + run_4f600(); + return; } - case 0x58098: - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x58524; - run_58400(); return; + case 0x4f298: + if (r30 < 0) { + /* Next insn is delay slot */ + pc = 0x4f724; + run_4f600(); + return; } - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x580c8; + if (r30 != r0) { + /* Next insn is delay slot */ + pc = 0x4f2c8; continue; } - r8 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x580c8; + r8 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; + if (r8 != r0) { + /* Next insn is delay slot */ + pc = 0x4f2c8; continue; } - r9 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x58524; - run_58400(); return; + r9 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + if (r9 == r0) { + /* Next insn is delay slot */ + pc = 0x4f724; + run_4f600(); + return; } - case 0x580c8: - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x58928; - run_58800(); return; + case 0x4f2c8: + if (r2 > 0) { + /* Next insn is delay slot */ + pc = 0x4fb28; + run_4fa00(); + return; } - r8 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; + r8 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; r3 = r18 + r0; - addr=r18+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r18 == r8) { - /* Next insn is delay slot */ - pc=0x58954; - run_58800(); return; + addr = r18 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r23 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r18 == r8) { + /* Next insn is delay slot */ + pc = 0x4fb54; + run_4fa00(); + return; } r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; - /* Next insn is delay slot */ - r31=0x580fc; - pc=0x5bc00; - run_5bc00(); return; - case 0x580fc: + /* Next insn is delay slot */ + r31 = 0x4f2fc; + pc = 0x51c00; + run_51c00(); + return; + case 0x4f2fc: r17 = r2 + r0; r4 = r16 + r0; r5 = r19 + r0; r6 = r0 + 10; r7 = r0 + r0; - if(r19 == r21) { - /* Next insn is delay slot */ - pc=0x585b8; - run_58400(); return; + if (r19 == r21) { + /* Next insn is delay slot */ + pc = 0x4f7b8; + run_4f600(); + return; } - /* Next insn is delay slot */ - r31=0x58120; - pc=0x5bc00; - run_5bc00(); return; - case 0x58120: + /* Next insn is delay slot */ + r31 = 0x4f320; + pc = 0x51c00; + run_51c00(); + return; + case 0x4f320: r5 = r21 + r0; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; r19 = r2 + r0; - /* Next insn is delay slot */ - r31=0x5813c; - pc=0x5bc00; - run_5bc00(); return; - case 0x5813c: + /* Next insn is delay slot */ + r31 = 0x4f33c; + pc = 0x51c00; + run_51c00(); + return; + case 0x4f33c: r21 = r2 + r0; r18 = r18 + 1; - /* Next insn is delay slot */ - pc=0x57fe0; - run_57e00(); return; - case 0x5814c: + /* Next insn is delay slot */ + pc = 0x4f1e0; + run_4f000(); + return; + case 0x4f34c: r3 = r0 + 1; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x57730; - run_57600(); return; - case 0x5815c: - r9 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4e930; + run_4e800(); + return; + case 0x4f35c: + r9 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r0; r18 = r18 - r9; r22 = r0 - r9; - /* Next insn is delay slot */ - pc=0x57760; - run_57600(); return; - case 0x58174: + /* Next insn is delay slot */ + pc = 0x4e960; + run_4e800(); + return; + case 0x4f374: r18 = r0 - r23; r23 = r0 + r0; - /* Next insn is delay slot */ - pc=0x57744; - run_57600(); return; - case 0x58184: - f4 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits(((double)f4)); f1 = (int)(l >>> 32); f0 = (int)l; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))==(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x576dc; - run_57600(); return; + /* Next insn is delay slot */ + pc = 0x4e944; + run_4e800(); + return; + case 0x4f384: + f4 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits(((double) f4)); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) == (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4e8dc; + run_4e800(); + return; } r3 = f4; r3 = r3 + -1; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x576dc; - run_57600(); return; - case 0x581b8: - r8 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4e8dc; + run_4e800(); + return; + case 0x4f3b8: + r8 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; r3 = r22 + r0; r8 = r8 < 2 ? 1 : 0; r21 = r18 + r0; r19 = r0 + r0; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - pc=0x57dec; - run_57c00(); return; - case 0x581d8: + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r8; + /* Next insn is delay slot */ + pc = 0x4efec; + run_4ee00(); + return; + case 0x4f3d8: r2 = r0 + 28; - case 0x581dc: + case 0x4f3dc: r18 = r18 + r2; r21 = r21 + r2; r23 = r23 + r2; - /* Next insn is delay slot */ - pc=0x57f2c; - run_57e00(); return; - case 0x581f0: - r18 = r0 + -1042; - r7 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = r18 - r4; - r18 = r7 << (r18&0x1f); - case 0x58200: - pc=0x58200; + /* Next insn is delay slot */ + pc = 0x4f12c; + run_4f000(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4f3f0: + r18 = r0 + -1042; + r7 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = r18 - r4; + r18 = r7 << (r18 & 0x1f); + case 0x4f400: + pc = 0x4f400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_58200() throws ExecutionException { /* 0x58200 - 0x58400 */ + + private final void run_4f400() throws ExecutionException { /* 0x4f400 - 0x4f600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x58200: - /* Next insn is delay slot */ - pc=0x5760c; - run_57600(); return; - case 0x58208: - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x57730; - run_57600(); return; - case 0x58214: + for (;;) { + switch (pc) { + case 0x4f400: + /* Next insn is delay slot */ + pc = 0x4e80c; + run_4e800(); + return; + case 0x4f408: + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4e930; + run_4e800(); + return; + case 0x4f414: r18 = r20 + r0; - /* Next insn is delay slot */ - pc=0x5823c; + /* Next insn is delay slot */ + pc = 0x4f43c; continue; - case 0x58220: + case 0x4f420: r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; - /* Next insn is delay slot */ - r31=0x58238; - pc=0x5bc00; - run_5bc00(); return; - case 0x58238: + /* Next insn is delay slot */ + r31 = 0x4f438; + pc = 0x51c00; + run_51c00(); + return; + case 0x4f438: r17 = r2 + r0; - case 0x5823c: + case 0x4f43c: r4 = r17 + r0; r5 = r22 + r0; - /* Next insn is delay slot */ - r31=0x5824c; - pc=0x57000; - run_57000(); return; - case 0x5824c: + /* Next insn is delay slot */ + r31 = 0x4f44c; + pc = 0x4e200; + run_4e200(); + return; + case 0x4f44c: r18 = r18 + 1; r23 = r2 + 48; r2 = r18 - r20; r2 = r2 < r30 ? 1 : 0; - addr=r18+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x58220; + addr = r18 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r23 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4f420; continue; } - if(r30 <= 0) { - /* Next insn is delay slot */ - pc=0x58518; - run_58400(); return; + if (r30 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f718; + run_4f600(); + return; } - case 0x58270: + case 0x4f470: r3 = r20 + r30; r18 = r0 + r0; - case 0x58278: + case 0x4f478: r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 1; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x58290; - pc=0x5cc00; - run_5cc00(); return; - case 0x58290: + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x4f490; + pc = 0x52a00; + run_52a00(); + return; + case 0x4f490: r4 = r2 + r0; r5 = r22 + r0; r17 = r2 + r0; - /* Next insn is delay slot */ - r31=0x582a4; - pc=0x5ce00; - run_5ce00(); return; - case 0x582a4: - r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x584c0; - run_58400(); return; + /* Next insn is delay slot */ + r31 = 0x4f4a4; + pc = 0x52c00; + run_52c00(); + return; + case 0x4f4a4: + r3 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + if (r2 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f6c0; + run_4f600(); + return; } - case 0x582b0: - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x4f4b0: + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r4 = tmp; - case 0x582b4: + case 0x4f4b4: r5 = r0 + 57; - /* Next insn is delay slot */ - pc=0x582d0; + /* Next insn is delay slot */ + pc = 0x4f4d0; continue; - case 0x582c0: - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x586b4; - run_58600(); return; + case 0x4f4c0: + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x4f8b4; + run_4f800(); + return; } - addr=r2+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r2 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r3 = r2 + r0; - case 0x582d0: + case 0x4f4d0: r2 = r3 + -1; - if(r4 == r5) { - /* Next insn is delay slot */ - pc=0x582c0; + if (r4 == r5) { + /* Next insn is delay slot */ + pc = 0x4f4c0; continue; } r4 = r4 + 1; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x582e4: + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x4f4e4: r4 = r16 + r0; r5 = r22 + r0; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x582f8; - pc=0x5ba00; - run_5ba00(); return; - case 0x582f8: - r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x57ac4; - run_57a00(); return; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x4f4f8; + pc = 0x51a00; + run_51a00(); + return; + case 0x4f4f8: + r3 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + if (r19 == r0) { + /* Next insn is delay slot */ + pc = 0x4ecc4; + run_4ec00(); + return; } - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x58328; + if (r18 == r0) { + /* Next insn is delay slot */ + pc = 0x4f528; continue; } - if(r18 == r19) { - /* Next insn is delay slot */ - pc=0x58328; + if (r18 == r19) { + /* Next insn is delay slot */ + pc = 0x4f528; continue; } r4 = r16 + r0; r5 = r18 + r0; - /* Next insn is delay slot */ - r31=0x58324; - pc=0x5ba00; - run_5ba00(); return; - case 0x58324: - r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - case 0x58328: + /* Next insn is delay slot */ + r31 = 0x4f524; + pc = 0x51a00; + run_51a00(); + return; + case 0x4f524: + r3 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + case 0x4f528: r4 = r16 + r0; r5 = r19 + r0; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x5833c; - pc=0x5ba00; - run_5ba00(); return; - case 0x5833c: - r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x57ac4; - run_57a00(); return; - case 0x58348: + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x4f53c; + pc = 0x51a00; + run_51a00(); + return; + case 0x4f53c: + r3 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4ecc4; + run_4ec00(); + return; + case 0x4f548: r4 = r17 + r0; r5 = r22 + r0; - /* Next insn is delay slot */ - r31=0x58358; - pc=0x5ce00; - run_5ce00(); return; - case 0x58358: - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x57f7c; - run_57e00(); return; + /* Next insn is delay slot */ + r31 = 0x4f558; + pc = 0x52c00; + run_52c00(); + return; + case 0x4f558: + if (r2 >= 0) { + /* Next insn is delay slot */ + pc = 0x4f17c; + run_4f000(); + return; } - r9 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + r9 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r5 = r17 + r0; r9 = r9 + -1; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r9; - /* Next insn is delay slot */ - r31=0x58384; - pc=0x5bc00; - run_5bc00(); return; - case 0x58384: - r3 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r9; + /* Next insn is delay slot */ + r31 = 0x4f584; + pc = 0x51c00; + run_51c00(); + return; + case 0x4f584: + r3 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; r17 = r2 + r0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x58ba8; - run_58a00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x4fda8; + run_4fc00(); + return; } - r30 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x57f7c; - run_57e00(); return; - case 0x583a0: - r8 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x57edc; - run_57e00(); return; + r30 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4f17c; + run_4f000(); + return; + case 0x4f5a0: + r8 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + if (r8 != r0) { + /* Next insn is delay slot */ + pc = 0x4f0dc; + run_4f000(); + return; } r2 = 15 << 16; - r9 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; + r9 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; r2 = r2 | 65535; r2 = r2 & r9; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x57edc; - run_57e00(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4f0dc; + run_4f000(); + return; } r2 = 32752 << 16; r2 = r2 & r9; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x57edc; - run_57e00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4f0dc; + run_4f000(); + return; } r3 = r0 + 1; r18 = r18 + 1; r23 = r23 + 1; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x57ee0; - run_57e00(); return; - case 0x583f0: - r2 = r21 + r0; - /* Next insn is delay slot */ - pc=0x57e0c; - run_57e00(); return; - case 0x583fc: - r9 = r0 + 1; - case 0x58400: - pc=0x58400; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = 0x4f0e0; + run_4f000(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4f5f0: + r2 = r21 + r0; + /* Next insn is delay slot */ + pc = 0x4f00c; + run_4f000(); + return; + case 0x4f5fc: + r9 = r0 + 1; + case 0x4f600: + pc = 0x4f600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_58400() throws ExecutionException { /* 0x58400 - 0x58600 */ + + private final void run_4f600() throws ExecutionException { /* 0x4f600 - 0x4f800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x58400: - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r9; - case 0x58404: - r4 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - if(r4 <= 0) { - /* Next insn is delay slot */ - pc=0x587f0; - run_58600(); return; + for (;;) { + switch (pc) { + case 0x4f600: + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r9; + case 0x4f604: + r4 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; + if (r4 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f9f0; + run_4f800(); + return; } r6 = r4 + r0; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r4; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r4; r30 = r4 + r0; - /* Next insn is delay slot */ - pc=0x577f0; - run_57600(); return; - case 0x58428: - if(r30 > 0) { - /* Next insn is delay slot */ - pc=0x57bfc; - run_57a00(); return; + /* Next insn is delay slot */ + pc = 0x4e9f0; + run_4e800(); + return; + case 0x4f628: + if (r30 > 0) { + /* Next insn is delay slot */ + pc = 0x4edfc; + run_4ec00(); + return; } - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x58758; - run_58600(); return; + if (r30 != r0) { + /* Next insn is delay slot */ + pc = 0x4f958; + run_4f800(); + return; } - f0 = readPages[(r28+-30988)>>>12][((r28+-30988)>>>2)&0x3ff]; + f0 = readPages[(r28 + -31428) >>> 12][((r28 + -31428) >>> 2) & 0x3ff]; r22 = r0 + r0; - f1 = readPages[(r28+-30992)>>>12][((r28+-30992)>>>2)&0x3ff]; - r19 = r0 + r0; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - f0 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f1 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<=(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x58694; - run_58600(); return; + f1 = readPages[(r28 + -31432) >>> 12][((r28 + -31432) >>> 2) & 0x3ff]; + r19 = r0 + r0; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + f0 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + f1 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) <= (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x4f894; + run_4f800(); + return; } - case 0x5846c: - r9 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; + case 0x4f66c: + r9 = readPages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff]; r3 = r20 + r0; r9 = ~(r0 | r9); - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r9; - case 0x5847c: + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r9; + case 0x4f67c: r4 = r16 + r0; r5 = r22 + r0; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x58490; - pc=0x5ba00; - run_5ba00(); return; - case 0x58490: - r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x58328; - run_58200(); return; + writePages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x4f690; + pc = 0x51a00; + run_51a00(); + return; + case 0x4f690: + r3 = readPages[(r29 + 72) >>> 12][((r29 + 72) >>> 2) & 0x3ff]; + if (r19 != r0) { + /* Next insn is delay slot */ + pc = 0x4f528; + run_4f400(); + return; } - /* Next insn is delay slot */ - pc=0x57ac4; - run_57a00(); return; - case 0x584a4: + /* Next insn is delay slot */ + pc = 0x4ecc4; + run_4ec00(); + return; + case 0x4f6a4: r5 = r17 + r0; r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x584b4; - pc=0x5ca00; - run_5ca00(); return; - case 0x584b4: + /* Next insn is delay slot */ + r31 = 0x4f6b4; + pc = 0x52800; + run_52800(); + return; + case 0x4f6b4: r17 = r2 + r0; - /* Next insn is delay slot */ - pc=0x57e94; - run_57e00(); return; - case 0x584c0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x584d4; + /* Next insn is delay slot */ + pc = 0x4f094; + run_4f000(); + return; + case 0x4f6c0: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4f6d4; continue; } r23 = r23 & 1; - if(r23 != r0) { - /* Next insn is delay slot */ - pc=0x582b0; - run_58200(); return; + if (r23 != r0) { + /* Next insn is delay slot */ + pc = 0x4f4b0; + run_4f400(); + return; } - case 0x584d4: + case 0x4f6d4: r5 = r0 + 48; - /* Next insn is delay slot */ - pc=0x584e4; + /* Next insn is delay slot */ + pc = 0x4f6e4; continue; - case 0x584e0: + case 0x4f6e0: r3 = r4 + r0; - case 0x584e4: - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x4f6e4: + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r4 = r3 + -1; - if(r2 == r5) { - /* Next insn is delay slot */ - pc=0x584e0; + if (r2 == r5) { + /* Next insn is delay slot */ + pc = 0x4f6e0; continue; } - /* Next insn is delay slot */ - pc=0x582e4; - run_58200(); return; - case 0x584fc: - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x58a88; - run_58a00(); return; + /* Next insn is delay slot */ + pc = 0x4f4e4; + run_4f400(); + return; + case 0x4f6fc: + if (r19 == r0) { + /* Next insn is delay slot */ + pc = 0x4fc88; + run_4fc00(); + return; } r2 = r2 + 1075; r3 = r22 + r0; r21 = r18 + r0; - /* Next insn is delay slot */ - pc=0x57dc8; - run_57c00(); return; - case 0x58518: + /* Next insn is delay slot */ + pc = 0x4efc8; + run_4ee00(); + return; + case 0x4f718: r30 = r0 + 1; - /* Next insn is delay slot */ - pc=0x58270; - run_58200(); return; - case 0x58524: - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x58574; + /* Next insn is delay slot */ + pc = 0x4f470; + run_4f400(); + return; + case 0x4f724: + if (r2 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f774; continue; } r5 = r17 + r0; r4 = r16 + r0; r6 = r0 + 1; - /* Next insn is delay slot */ - r31=0x58540; - pc=0x5cc00; - run_5cc00(); return; - case 0x58540: + /* Next insn is delay slot */ + r31 = 0x4f740; + pc = 0x52a00; + run_52a00(); + return; + case 0x4f740: r4 = r2 + r0; r5 = r22 + r0; r17 = r2 + r0; - /* Next insn is delay slot */ - r31=0x58554; - pc=0x5ce00; - run_5ce00(); return; - case 0x58554: - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x58b8c; - run_58a00(); return; + /* Next insn is delay slot */ + r31 = 0x4f754; + pc = 0x52c00; + run_52c00(); + return; + case 0x4f754: + if (r2 <= 0) { + /* Next insn is delay slot */ + pc = 0x4fd8c; + run_4fc00(); + return; } - case 0x5855c: + case 0x4f75c: r2 = r0 + 57; - if(r23 == r2) { - /* Next insn is delay slot */ - pc=0x58b1c; - run_58a00(); return; + if (r23 == r2) { + /* Next insn is delay slot */ + pc = 0x4fd1c; + run_4fc00(); + return; } - r3 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; + r3 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; r23 = r3 + 49; - case 0x58574: - r7 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + case 0x4f774: + r7 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; r18 = r19 + r0; r3 = r7 + 1; - addr=r7+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r7 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r23 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r19 = r21 + r0; - /* Next insn is delay slot */ - pc=0x582e4; - run_58200(); return; - case 0x58590: + /* Next insn is delay slot */ + pc = 0x4f4e4; + run_4f400(); + return; + case 0x4f790: r2 = r0 + 57; - if(r23 == r2) { - /* Next insn is delay slot */ - pc=0x58b1c; - run_58a00(); return; + if (r23 == r2) { + /* Next insn is delay slot */ + pc = 0x4fd1c; + run_4fc00(); + return; } - if(r30 <= 0) { - /* Next insn is delay slot */ - pc=0x58574; + if (r30 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f774; continue; } - r9 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; + r9 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; r23 = r9 + 49; - /* Next insn is delay slot */ - pc=0x58574; + /* Next insn is delay slot */ + pc = 0x4f774; continue; - case 0x585b8: - /* Next insn is delay slot */ - r31=0x585c0; - pc=0x5bc00; - run_5bc00(); return; - case 0x585c0: + case 0x4f7b8: + /* Next insn is delay slot */ + r31 = 0x4f7c0; + pc = 0x51c00; + run_51c00(); + return; + case 0x4f7c0: r19 = r2 + r0; r21 = r2 + r0; r18 = r18 + 1; - /* Next insn is delay slot */ - pc=0x57fe0; - run_57e00(); return; - case 0x585d4: + /* Next insn is delay slot */ + pc = 0x4f1e0; + run_4f000(); + return; + case 0x4f7d4: r4 = r16 + r0; r5 = r3 + r0; - /* Next insn is delay slot */ - r31=0x585e4; - pc=0x5ba00; - run_5ba00(); return; - case 0x585e4: + /* Next insn is delay slot */ + r31 = 0x4f7e4; + pc = 0x51a00; + run_51a00(); + return; + case 0x4f7e4: r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x58098; - run_58000(); return; - case 0x585f0: - r2 = readPages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4f298; + run_4f200(); + return; + case 0x4f7f0: + r2 = readPages[(r22 + 16) >>> 12][((r22 + 16) >>> 2) & 0x3ff]; r2 = r2 + 3; r2 = r2 << 2; - case 0x58600: - pc=0x58600; + case 0x4f800: + pc = 0x4f800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_58600() throws ExecutionException { /* 0x58600 - 0x58800 */ + + private final void run_4f800() throws ExecutionException { /* 0x4f800 - 0x4fa00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x58600: + for (;;) { + switch (pc) { + case 0x4f800: r2 = r22 + r2; - r4 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x58610; - pc=0x5c000; - run_5c000(); return; - case 0x58610: + r4 = readPages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x4f810; + pc = 0x51e00; + run_51e00(); + return; + case 0x4f810: r3 = r0 + 32; r2 = r3 - r2; - /* Next insn is delay slot */ - pc=0x57ef4; - run_57e00(); return; - case 0x58620: + /* Next insn is delay slot */ + pc = 0x4f0f4; + run_4f000(); + return; + case 0x4f820: r2 = r20 + r0; - /* Next insn is delay slot */ - pc=0x574e8; - run_57400(); return; - case 0x5862c: + /* Next insn is delay slot */ + pc = 0x4e6e8; + run_4e600(); + return; + case 0x4f82c: r2 = r0 + 2; - if(r9 != r2) { - /* Next insn is delay slot */ - pc=0x57b80; - run_57a00(); return; + if (r9 != r2) { + /* Next insn is delay slot */ + pc = 0x4ed80; + run_4ec00(); + return; } - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x58404; - run_58400(); return; - case 0x58644: - r8 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4f604; + run_4f600(); + return; + case 0x4f844: + r8 = readPages[(r29 + 144) >>> 12][((r29 + 144) >>> 2) & 0x3ff]; r2 = r8 < 3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x57f84; - run_57e00(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4f184; + run_4f000(); + return; } - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x5846c; - run_58400(); return; + if (r30 != r0) { + /* Next insn is delay slot */ + pc = 0x4f66c; + run_4f600(); + return; } r5 = r22 + r0; r4 = r16 + r0; r6 = r0 + 5; r7 = r0 + r0; - /* Next insn is delay slot */ - r31=0x58678; - pc=0x5bc00; - run_5bc00(); return; - case 0x58678: + /* Next insn is delay slot */ + r31 = 0x4f878; + pc = 0x51c00; + run_51c00(); + return; + case 0x4f878: r5 = r2 + r0; r4 = r17 + r0; r22 = r2 + r0; - /* Next insn is delay slot */ - r31=0x5868c; - pc=0x5ce00; - run_5ce00(); return; - case 0x5868c: - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x5846c; - run_58400(); return; + /* Next insn is delay slot */ + r31 = 0x4f88c; + pc = 0x52c00; + run_52c00(); + return; + case 0x4f88c: + if (r2 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f66c; + run_4f600(); + return; } - case 0x58694: - r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + case 0x4f894: + r8 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r2 = r0 + 49; r8 = r8 + 1; r3 = r20 + 1; - addr=r20+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - pc=0x5847c; - run_58400(); return; - case 0x586b4: - r9 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + addr = r20 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r8; + /* Next insn is delay slot */ + pc = 0x4f67c; + run_4f600(); + return; + case 0x4f8b4: + r9 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r2 = r0 + 49; r9 = r9 + 1; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r9; - addr=r20+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x582e4; - run_58200(); return; - case 0x586d0: + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r9; + addr = r20 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x4f4e4; + run_4f400(); + return; + case 0x4f8d0: f4 = r8; - r2 = 64704 << 16; - { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f2 = readPages[(r28+-30996)>>>12][((r28+-30996)>>>2)&0x3ff]; - f3 = readPages[(r28+-31000)>>>12][((r28+-31000)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } + r2 = 64704 << 16; { + long l = Double.doubleToLongBits(((double) f4)); + f3 = (int) (l >>> 32); + f2 = (int) l; + } { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f2 = readPages[(r28 + -31436) >>> 12][((r28 + -31436) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31440) >>> 12][((r28 + -31440) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } r8 = f7; r9 = f6; r8 = r2 + r8; - case 0x58700: - f2 = readPages[(r28+-30988)>>>12][((r28+-30988)>>>2)&0x3ff]; - f3 = readPages[(r28+-30992)>>>12][((r28+-30992)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + case 0x4f900: + f2 = readPages[(r28 + -31428) >>> 12][((r28 + -31428) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31432) >>> 12][((r28 + -31432) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } f2 = r9; f3 = r8; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x58964; - run_58800(); return; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) < (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (1 != 0)) { + /* Next insn is delay slot */ + pc = 0x4fb64; + run_4fa00(); + return; } r4 = 32768 << 16; f2 = r9; r2 = r4 ^ r8; f3 = r2; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x58768; + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) < (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x4f968; continue; } - case 0x58758: + case 0x4f958: r22 = r0 + r0; r19 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5846c; - run_58400(); return; - case 0x58768: - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = f8; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = f9; - /* Next insn is delay slot */ - pc=0x57bb4; - run_57a00(); return; - case 0x58778: + /* Next insn is delay slot */ + pc = 0x4f66c; + run_4f600(); + return; + case 0x4f968: + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = f8; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = f9; + /* Next insn is delay slot */ + pc = 0x4edb4; + run_4ec00(); + return; + case 0x4f978: r5 = r17 + r0; r4 = r16 + r0; r6 = r22 + r0; - /* Next insn is delay slot */ - r31=0x5878c; - pc=0x5ca00; - run_5ca00(); return; - case 0x5878c: + /* Next insn is delay slot */ + r31 = 0x4f98c; + pc = 0x52800; + run_52800(); + return; + case 0x4f98c: r17 = r2 + r0; - /* Next insn is delay slot */ - pc=0x57e94; - run_57e00(); return; - case 0x58798: - f0 = readPages[(r28+-31052)>>>12][((r28+-31052)>>>2)&0x3ff]; - f1 = readPages[(r28+-31056)>>>12][((r28+-31056)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - /* Next insn is delay slot */ - pc=0x57620; - run_57600(); return; - case 0x587b4: - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x577cc; - run_57600(); return; - case 0x587c0: - r7 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4f094; + run_4f000(); + return; + case 0x4f998: + f0 = readPages[(r28 + -31492) >>> 12][((r28 + -31492) >>> 2) & 0x3ff]; + f1 = readPages[(r28 + -31496) >>> 12][((r28 + -31496) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + /* Next insn is delay slot */ + pc = 0x4e820; + run_4e800(); + return; + case 0x4f9b4: + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x4e9cc; + run_4e800(); + return; + case 0x4f9c0: + r7 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; r22 = r3 - r22; r7 = r7 + r22; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r7; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r7; r22 = r3 + r0; r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x57db8; - run_57c00(); return; - case 0x587e0: + /* Next insn is delay slot */ + pc = 0x4efb8; + run_4ee00(); + return; + case 0x4f9e0: f0 = f8; f1 = f9; r8 = r0 + 2; - /* Next insn is delay slot */ - pc=0x578b8; - run_57800(); return; - case 0x587f0: + /* Next insn is delay slot */ + pc = 0x4eab8; + run_4ea00(); + return; + case 0x4f9f0: r3 = r0 + 1; r4 = r0 + 1; r21 = r0 + 1; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r3; - case 0x58800: - pc=0x58800; + writePages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff] = r3; + case 0x4fa00: + pc = 0x4fa00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_58800() throws ExecutionException { /* 0x58800 - 0x58a00 */ + + private final void run_4fa00() throws ExecutionException { /* 0x4fa00 - 0x4fc00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x58800: + for (;;) { + switch (pc) { + case 0x4fa00: r30 = r0 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r4; - writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r0; + writePages[(r29 + 148) >>> 12][((r29 + 148) >>> 2) & 0x3ff] = r4; + writePages[(r16 + 68) >>> 12][((r16 + 68) >>> 2) & 0x3ff] = r0; r5 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5782c; - run_57800(); return; - case 0x58818: + /* Next insn is delay slot */ + pc = 0x4ea2c; + run_4ea00(); + return; + case 0x4fa18: r21 = r30 + r0; - writePages[(r16+68)>>>12][((r16+68)>>>2)&0x3ff] = r0; + writePages[(r16 + 68) >>> 12][((r16 + 68) >>> 2) & 0x3ff] = r0; r5 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5782c; - run_57800(); return; - case 0x5882c: - r9 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4ea2c; + run_4ea00(); + return; + case 0x4fa2c: + r9 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r2 = r0 - r9; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x58aa4; - run_58a00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4fca4; + run_4fc00(); + return; } r4 = r2 & 15; - r3 = 7 << 16; + r3 = 6 << 16; r4 = r4 << 3; - r3 = r3 + 2176; + r3 = r3 + -26584; r3 = r4 + r3; - f0 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; + f0 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; r2 = r2 >> 4; - f1 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f9&0xffffffffL) << 32) | (f8&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x58bd0; - run_58a00(); return; + f1 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f9 & 0xffffffffL) << 32) | (f8 & 0xffffffffL))) + * (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4fdd0; + run_4fc00(); + return; } - r3 = 7 << 16; - r3 = r3 + 2136; + r3 = 6 << 16; + r3 = r3 + -26624; r8 = r0 + 2; - case 0x5887c: + case 0x4fa7c: r4 = r2 & 1; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5889c; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x4fa9c; continue; } - f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; + f2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; r8 = r8 + 1; - f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - case 0x5889c: + f3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + case 0x4fa9c: r2 = r2 >> 1; r3 = r3 + 8; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5887c; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4fa7c; continue; } - /* Next insn is delay slot */ - pc=0x578fc; - run_57800(); return; - case 0x588b4: - r8 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4eafc; + run_4ea00(); + return; + case 0x4fab4: + r8 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r4 = r0 + 48; - addr=r20+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r20 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r8 = r8 + 1; r4 = r0 + 49; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r8; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x57ac4; - run_57a00(); return; - case 0x588d8: - r5 = readPages[(r19+4)>>>12][((r19+4)>>>2)&0x3ff]; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r8; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + /* Next insn is delay slot */ + pc = 0x4ecc4; + run_4ec00(); + return; + case 0x4fad8: + r5 = readPages[(r19 + 4) >>> 12][((r19 + 4) >>> 2) & 0x3ff]; r4 = r16 + r0; - /* Next insn is delay slot */ - r31=0x588e8; - pc=0x5b800; - run_5b800(); return; - case 0x588e8: - r6 = readPages[(r19+16)>>>12][((r19+16)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x4fae8; + pc = 0x51800; + run_51800(); + return; + case 0x4fae8: + r6 = readPages[(r19 + 16) >>> 12][((r19 + 16) >>> 2) & 0x3ff]; r18 = r2 + r0; r6 = r6 + 2; r4 = r2 + 12; r5 = r19 + 12; r6 = r6 << 2; - /* Next insn is delay slot */ - r31=0x58908; - pc=0x48fdc; - run_48e00(); return; - case 0x58908: + /* Next insn is delay slot */ + r31 = 0x4fb08; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x4fb08: r4 = r16 + r0; r5 = r18 + r0; r6 = r0 + 1; - /* Next insn is delay slot */ - r31=0x5891c; - pc=0x5cc00; - run_5cc00(); return; - case 0x5891c: + /* Next insn is delay slot */ + r31 = 0x4fb1c; + pc = 0x52a00; + run_52a00(); + return; + case 0x4fb1c: r21 = r2 + r0; - /* Next insn is delay slot */ - pc=0x57fc8; - run_57e00(); return; - case 0x58928: + /* Next insn is delay slot */ + pc = 0x4f1c8; + run_4f000(); + return; + case 0x4fb28: r2 = r0 + 57; - if(r23 == r2) { - /* Next insn is delay slot */ - pc=0x58b1c; - run_58a00(); return; + if (r23 == r2) { + /* Next insn is delay slot */ + pc = 0x4fd1c; + run_4fc00(); + return; } - r9 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + r9 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; r23 = r23 + 1; r18 = r19 + r0; r3 = r9 + 1; - addr=r9+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r23&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r9 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r23 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r19 = r21 + r0; - /* Next insn is delay slot */ - pc=0x582e4; - run_58200(); return; - case 0x58954: + /* Next insn is delay slot */ + pc = 0x4f4e4; + run_4f400(); + return; + case 0x4fb54: r18 = r19 + r0; r19 = r21 + r0; - /* Next insn is delay slot */ - pc=0x58278; - run_58200(); return; - case 0x58964: + /* Next insn is delay slot */ + pc = 0x4f478; + run_4f400(); + return; + case 0x4fb64: r22 = r0 + r0; r19 = r0 + r0; - /* Next insn is delay slot */ - pc=0x58694; - run_58600(); return; - case 0x58974: - r3 = 7 << 16; + /* Next insn is delay slot */ + pc = 0x4f894; + run_4f800(); + return; + case 0x4fb74: + r3 = 6 << 16; r6 = r5 << 3; - r3 = r3 + 2176; + r3 = r3 + -26584; r3 = r6 + r3; - f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; + f2 = readPages[(r3 + 4) >>> 12][((r3 + 4) >>> 2) & 0x3ff]; f4 = r9; - f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + f3 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; f5 = r8; - r3 = r20 + 1; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f11 = (int)(l >>> 32); f10 = (int)l; } + r3 = r20 + 1; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + * (Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL)))); + f11 = (int) (l >>> 32); + f10 = (int) l; + } r6 = fcsr; r6 = fcsr; r1 = r6 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f4 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f4 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f4 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f4 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f4 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f4 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f4 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f4 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity } fcsr = r6; - r7 = f4; - { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } + r7 = f4; { + long l = Double.doubleToLongBits(((double) f4)); + f3 = (int) (l >>> 32); + f2 = (int) l; + } r6 = r7 + 48; - addr=r20+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r6 = r0 + 1; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - if(r4 == r6) { - /* Next insn is delay slot */ - pc=0x58a44; - run_58a00(); return; + addr = r20 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r6 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r6 = r0 + 1; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + if (r4 == r6) { + /* Next insn is delay slot */ + pc = 0x4fc44; + run_4fc00(); + return; } - f6 = readPages[(r28+-31004)>>>12][((r28+-31004)>>>2)&0x3ff]; + f6 = readPages[(r28 + -31444) >>> 12][((r28 + -31444) >>> 2) & 0x3ff]; r4 = r20 + r4; - f7 = readPages[(r28+-31008)>>>12][((r28+-31008)>>>2)&0x3ff]; + f7 = readPages[(r28 + -31448) >>> 12][((r28 + -31448) >>> 2) & 0x3ff]; r6 = r3 + r0; - case 0x589f4: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } + case 0x4fbf4: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } r6 = r6 + 1; r8 = fcsr; - case 0x58a00: - pc=0x58a00; + case 0x4fc00: + pc = 0x4fc00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_58a00() throws ExecutionException { /* 0x58a00 - 0x58c00 */ + + private final void run_4fc00() throws ExecutionException { /* 0x4fc00 - 0x4fe00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x58a00: + for (;;) { + switch (pc) { + case 0x4fc00: r8 = fcsr; r1 = r8 | 3; r1 = r1 ^ 2; fcsr = r1; - switch(fcsr & 3) { - case 0: f4 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f4 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f4 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f4 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity + switch (fcsr & 3) { + case 0: + f4 = (int) Math.floor( + (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + 0.5); + break; // Round to nearest + case 1: + f4 = (int) (Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))); + break; // Round towards zero + case 2: + f4 = (int) Math + .ceil((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards plus infinity + case 3: + f4 = (int) Math + .floor((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))); + break; // Round towards minus infinity } fcsr = r8; - r9 = f4; - { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } - r10 = r9 + 48; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))-(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - addr=r6+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r10&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r6 != r4) { - /* Next insn is delay slot */ - pc=0x589f4; - run_58800(); return; + r9 = f4; { + long l = Double.doubleToLongBits(((double) f4)); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + r10 = r9 + 48; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + - (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } + addr = r6 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r10 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r6 != r4) { + /* Next insn is delay slot */ + pc = 0x4fbf4; + run_4fa00(); + return; } r3 = r3 + r5; - case 0x58a44: - f2 = readPages[(r28+-30980)>>>12][((r28+-30980)>>>2)&0x3ff]; - f3 = readPages[(r28+-30984)>>>12][((r28+-30984)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x58b40; + case 0x4fc44: + f2 = readPages[(r28 + -31420) >>> 12][((r28 + -31420) >>> 2) & 0x3ff]; + f3 = readPages[(r28 + -31424) >>> 12][((r28 + -31424) >>> 2) & 0x3ff]; { + long l = Double.doubleToLongBits( + (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) < (Double + .longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x4fd40; continue; } - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r5 = tmp; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x57d3c; - run_57c00(); return; - case 0x58a78: + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x4ef3c; + run_4ee00(); + return; + case 0x4fc78: r21 = r18 - r30; r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x57dc8; - run_57c00(); return; - case 0x58a88: - r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4efc8; + run_4ee00(); + return; + case 0x4fc88: + r2 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r3 = r0 + 54; r2 = r3 - r2; r21 = r18 + r0; r3 = r22 + r0; - /* Next insn is delay slot */ - pc=0x57dc8; - run_57c00(); return; - case 0x58aa4: + /* Next insn is delay slot */ + pc = 0x4efc8; + run_4ee00(); + return; + case 0x4fca4: f0 = f8; f1 = f9; r8 = r0 + 2; - /* Next insn is delay slot */ - pc=0x578fc; - run_57800(); return; - case 0x58ab4: - if(r30 == r0) { - /* Next insn is delay slot */ - pc=0x586d0; - run_58600(); return; + /* Next insn is delay slot */ + pc = 0x4eafc; + run_4ea00(); + return; + case 0x4fcb4: + if (r30 == r0) { + /* Next insn is delay slot */ + pc = 0x4f8d0; + run_4f800(); + return; } - r9 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - if(r9 <= 0) { - /* Next insn is delay slot */ - pc=0x58768; - run_58600(); return; + r9 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + if (r9 <= 0) { + /* Next insn is delay slot */ + pc = 0x4f968; + run_4f800(); + return; } - f6 = readPages[(r28+-31004)>>>12][((r28+-31004)>>>2)&0x3ff]; + f6 = readPages[(r28 + -31444) >>> 12][((r28 + -31444) >>> 2) & 0x3ff]; r8 = r8 + 1; - f7 = readPages[(r28+-31008)>>>12][((r28+-31008)>>>2)&0x3ff]; - f4 = r8; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f7&0xffffffffL) << 32) | (f6&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } - r3 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r4 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r2 = r3 + -1; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f2 = readPages[(r28+-30996)>>>12][((r28+-30996)>>>2)&0x3ff]; + f7 = readPages[(r28 + -31448) >>> 12][((r28 + -31448) >>> 2) & 0x3ff]; + f4 = r8; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f7 & 0xffffffffL) << 32) | (f6 & 0xffffffffL)))); + f1 = (int) (l >>> 32); + f0 = (int) l; + } { + long l = Double.doubleToLongBits(((double) f4)); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + r3 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r4 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + r2 = r3 + -1; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) + * (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f5 = (int) (l >>> 32); + f4 = (int) l; + } + f2 = readPages[(r28 + -31436) >>> 12][((r28 + -31436) >>> 2) & 0x3ff]; r3 = 64704 << 16; - f3 = readPages[(r28+-31000)>>>12][((r28+-31000)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f7 = (int)(l >>> 32); f6 = (int)l; } + f3 = readPages[(r28 + -31440) >>> 12][((r28 + -31440) >>> 2) & 0x3ff]; { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f5 & 0xffffffffL) << 32) | (f4 & 0xffffffffL))) + + (Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))); + f7 = (int) (l >>> 32); + f6 = (int) l; + } r8 = f7; r9 = f6; r8 = r3 + r8; - /* Next insn is delay slot */ - pc=0x5796c; - run_57800(); return; - case 0x58b1c: - r8 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x4eb6c; + run_4ea00(); + return; + case 0x4fd1c: + r8 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; r2 = r0 + 57; r18 = r19 + r0; r3 = r8 + 1; - addr=r8+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r8 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r2 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r19 = r21 + r0; r4 = r0 + 57; - /* Next insn is delay slot */ - pc=0x582b4; - run_58200(); return; - case 0x58b40: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f11&0xffffffffL) << 32) | (f10&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x58768; - run_58600(); return; + /* Next insn is delay slot */ + pc = 0x4f4b4; + run_4f400(); + return; + case 0x4fd40: { + long l = Double + .doubleToLongBits((Double.longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL))) + - (Double.longBitsToDouble(((f11 & 0xffffffffL) << 32) | (f10 & 0xffffffffL)))); + f3 = (int) (l >>> 32); + f2 = (int) l; + } + fcsr = (fcsr & ~0x800000) + | (((Double.longBitsToDouble(((f1 & 0xffffffffL) << 32) | (f0 & 0xffffffffL))) < (Double + .longBitsToDouble(((f3 & 0xffffffffL) << 32) | (f2 & 0xffffffffL)))) ? 0x800000 + : 0x000000); + if (((fcsr & 0x800000) != 0) == (0 != 0)) { + /* Next insn is delay slot */ + pc = 0x4f968; + run_4f800(); + return; } r6 = r0 + 48; - /* Next insn is delay slot */ - pc=0x58b64; + /* Next insn is delay slot */ + pc = 0x4fd64; continue; - case 0x58b60: + case 0x4fd60: r3 = r5 + r0; - case 0x58b64: - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x4fd64: + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r5 = r3 + -1; - if(r4 == r6) { - /* Next insn is delay slot */ - pc=0x58b60; + if (r4 == r6) { + /* Next insn is delay slot */ + pc = 0x4fd60; continue; } - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x57ac4; - run_57a00(); return; - case 0x58b80: - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x57d3c; - run_57c00(); return; - case 0x58b8c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x58574; - run_58400(); return; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x4ecc4; + run_4ec00(); + return; + case 0x4fd80: + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r2; + /* Next insn is delay slot */ + pc = 0x4ef3c; + run_4ee00(); + return; + case 0x4fd8c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x4f774; + run_4f600(); + return; } r2 = r23 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x58574; - run_58400(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x4f774; + run_4f600(); + return; } - /* Next insn is delay slot */ - pc=0x5855c; - run_58400(); return; - case 0x58ba8: + /* Next insn is delay slot */ + pc = 0x4f75c; + run_4f600(); + return; + case 0x4fda8: r5 = r19 + r0; r4 = r16 + r0; r6 = r0 + 10; r7 = r0 + r0; - /* Next insn is delay slot */ - r31=0x58bc0; - pc=0x5bc00; - run_5bc00(); return; - case 0x58bc0: + /* Next insn is delay slot */ + r31 = 0x4fdc0; + pc = 0x51c00; + run_51c00(); + return; + case 0x4fdc0: r19 = r2 + r0; - r30 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x57f7c; - run_57e00(); return; - case 0x58bd0: + r30 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = 0x4f17c; + run_4f000(); + return; + case 0x4fdd0: r8 = r0 + 2; - /* Next insn is delay slot */ - pc=0x578fc; - run_57800(); return; - case 0x58bdc: + /* Next insn is delay slot */ + pc = 0x4eafc; + run_4ea00(); + return; + case 0x4fddc: r4 = r0 + 4; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x57f2c; - run_57e00(); return; + if (r3 == r4) { + /* Next insn is delay slot */ + pc = 0x4f12c; + run_4f000(); + return; } r3 = r0 + 60; r2 = r3 - r2; - /* Next insn is delay slot */ - pc=0x581dc; - run_58000(); return; - case 0x58bf8: - r8 = r0 + 1; - /* Next insn is delay slot */ - pc=0x5778c; - run_57600(); return; - case 0x58c00: - pc=0x58c00; + /* Next insn is delay slot */ + pc = 0x4f3dc; + run_4f200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x4fdf8: + r8 = r0 + 1; + /* Next insn is delay slot */ + pc = 0x4e98c; + run_4e800(); + return; + case 0x4fe00: + pc = 0x4fe00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_58c00() throws ExecutionException { /* 0x58c00 - 0x58e00 */ + + private final void run_4fe00() throws ExecutionException { /* 0x4fe00 - 0x50000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x58c00: - case 0x58c04: + for (;;) { + switch (pc) { + case 0x4fe00: + case 0x4fe04: r21 = r6 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5782c; - run_57800(); return; - case 0x58e00: - pc=0x58e00; + /* Next insn is delay slot */ + pc = 0x4ea2c; + run_4ea00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x50000: + pc = 0x50000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_58e00() throws ExecutionException { /* 0x58e00 - 0x59000 */ + + private final void run_50000() throws ExecutionException { /* 0x50000 - 0x50200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x58e00: - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x50000: + /* Next insn is delay slot */ + pc = r31; return; - case 0x59000: - pc=0x59000; + case 0x50200: + pc = 0x50200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_59000() throws ExecutionException { /* 0x59000 - 0x59200 */ + + private final void run_50200() throws ExecutionException { /* 0x50200 - 0x50400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x59000: - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x50200: + /* Next insn is delay slot */ + pc = r31; return; - case 0x59200: - pc=0x59200; + case 0x50400: + pc = 0x50400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_59200() throws ExecutionException { /* 0x59200 - 0x59400 */ + + private final void run_50400() throws ExecutionException { /* 0x50400 - 0x50600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x59200: - r2 = r6 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x593a4; - continue; - } - r29 = r29 + -56; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - r21 = r4 + r0; - r22 = r5 + r0; - r17 = r7 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x59254; - continue; - } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x59340; - continue; - } - case 0x59254: - r18 = r6 + -1; - r19 = r22 + r0; - /* Next insn is delay slot */ - pc=0x592d0; - continue; - case 0x59264: - r2 = ((r18 & 0xffffffffL) < (r16 & 0xffffffffL)) ? 1 : 0; - r20 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x59278; - continue; - } - r16 = r18 + r0; - case 0x59278: - r4 = r20 + r0; - r5 = r0 + 10; - r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x5928c; - pc=0x5b400; - run_5b400(); return; - case 0x5928c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x59358; - continue; - } - r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - r4 = r19 + r0; - r2 = r2 - r16; - writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r2; - r2 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - r5 = r20 + r0; - r2 = r2 + r16; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - r6 = r16 + r0; - r18 = r18 - r16; - /* Next insn is delay slot */ - r31=0x592c4; - pc=0x48fdc; - run_48e00(); return; - case 0x592c4: - r19 = r19 + r16; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x5930c; - continue; - } - case 0x592d0: - r16 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x59264; - continue; - } - r4 = r21 + r0; - r5 = r17 + r0; - /* Next insn is delay slot */ - r31=0x592f0; - pc=0x41200; - run_41200(); return; - case 0x592f0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x59304; - continue; - } - r16 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x59264; - continue; - case 0x59304: - if(r19 == r22) { - /* Next insn is delay slot */ - pc=0x59398; - continue; - } - case 0x5930c: - addr=r19+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r22 + r0; - case 0x59314: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x59340: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x5934c; - pc=0x3a600; - run_3a600(); return; - case 0x5934c: - r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x59254; - continue; - case 0x59358: - r2 = r2 + 1; - r3 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - r16 = r2 - r20; - r3 = r3 - r16; - r6 = r16 + r0; - writePages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff] = r3; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - r4 = r19 + r0; - r5 = r20 + r0; - r16 = r19 + r16; - /* Next insn is delay slot */ - r31=0x59388; - pc=0x48fdc; - run_48e00(); return; - case 0x59388: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r22 + r0; - /* Next insn is delay slot */ - pc=0x59314; - continue; - case 0x59398: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x59314; - continue; - case 0x593a4: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x59400: - pc=0x59400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_59400() throws ExecutionException { /* 0x59400 - 0x59600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x59400: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x59200; - run_59200(); return; - case 0x59600: - pc=0x59600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_59600() throws ExecutionException { /* 0x59600 - 0x59800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x59600: - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + for (;;) { + switch (pc) { + case 0x50400: + addr = r5 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r2 = tmp; r3 = r0 + 114; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x59698; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x50498; continue; } r3 = r0 + 119; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x59684; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x50484; continue; } r3 = r0 + 97; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x5963c; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x5043c; continue; } r2 = r0 + 22; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5963c: + case 0x5043c: r7 = r0 + 520; r4 = r0 + 1; r2 = r0 + 264; - case 0x59648: - addr=r5+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + case 0x50448: + addr = r5 + 1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x59674; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x50474; continue; } r8 = r0 + 43; - if(r3 == r8) { - /* Next insn is delay slot */ - pc=0x596ac; + if (r3 == r8) { + /* Next insn is delay slot */ + pc = 0x504ac; continue; } - addr=r5+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r5 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r3 = tmp; - if(r3 == r8) { - /* Next insn is delay slot */ - pc=0x596ac; + if (r3 == r8) { + /* Next insn is delay slot */ + pc = 0x504ac; continue; } - case 0x59674: + case 0x50474: r4 = r4 | r7; - writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=r31; + writePages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = r31; return; - case 0x59684: + case 0x50484: r7 = r0 + 1536; r4 = r0 + 1; r2 = r0 + 8; - /* Next insn is delay slot */ - pc=0x59648; + /* Next insn is delay slot */ + pc = 0x50448; continue; - case 0x59698: + case 0x50498: r7 = r0 + r0; r4 = r0 + r0; r2 = r0 + 4; - /* Next insn is delay slot */ - pc=0x59648; + /* Next insn is delay slot */ + pc = 0x50448; continue; - case 0x596ac: + case 0x504ac: r3 = r0 + -29; r4 = r0 + 2; r2 = r2 & r3; r4 = r4 | r7; r2 = r2 | 16; - writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=r31; + writePages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff] = r4; + /* Next insn is delay slot */ + pc = r31; return; - case 0x59800: - pc=0x59800; + case 0x50600: + pc = 0x50600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_59800() throws ExecutionException { /* 0x59800 - 0x59a00 */ + + private final void run_50600() throws ExecutionException { /* 0x50600 - 0x50800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x59800: - r29 = r29 + -56; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r17; - r17 = r4 + r0; - r4 = r5 + r0; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - r16 = r6 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - r31=0x59828; - pc=0x10268; - run_10200(); return; - case 0x59828: - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r2; - r2 = r29 + 28; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r2 = r0 + 1; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x59858; - continue; - } - r2 = readPages[(r17+56)>>>12][((r17+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x598b0; - continue; - } - case 0x59858: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r2 = tmp; - r3 = r2 & 8192; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x59884; - continue; - } - r2 = r2 | 8192; - r3 = readPages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff]; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 + -8193; - r2 = r3 & r2; - writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r2; - case 0x59884: - r4 = r17 + r0; - r5 = r16 + r0; - r6 = r29 + 16; - /* Next insn is delay slot */ - r31=0x59898; - pc=0x59c00; - run_59c00(); return; - case 0x59898: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x598b0: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x598bc; - pc=0x3a600; - run_3a600(); return; - case 0x598bc: - /* Next insn is delay slot */ - pc=0x59858; - continue; - case 0x59a00: - pc=0x59a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_59a00() throws ExecutionException { /* 0x59a00 - 0x59c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x59a00: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x59800; - run_59800(); return; - case 0x59c00: - pc=0x59c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_59c00() throws ExecutionException { /* 0x59c00 - 0x59e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x59c00: - r2 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x50600: + r2 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; r29 = r29 + -64; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r30; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r23; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r22; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r21; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; r19 = r6 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x59cd4; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x506d4; continue; } - addr=r5+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r5 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r21 = r4 + r0; r3 = r2 & 8; r16 = r5 + r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x59d0c; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x5070c; continue; } - r3 = readPages[(r5+16)>>>12][((r5+16)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x59d0c; + r3 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x5070c; continue; } r3 = r2 & 2; - r17 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x59d38; + r17 = readPages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x50738; continue; } - case 0x59c74: + case 0x50674: r20 = r0 + r0; r18 = r0 + r0; - case 0x59c7c: - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x59dfc; + case 0x5067c: + if (r18 == r0) { + /* Next insn is delay slot */ + pc = 0x507fc; continue; } - r2 = (r18&0xffffffffL) < (1025&0xffffffffL) ? 1 : 0; - r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; + r2 = (r18 & 0xffffffffL) < (1025 & 0xffffffffL) ? 1 : 0; + r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; r7 = r18 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x59c9c; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x5069c; continue; } r7 = r0 + 1024; - case 0x59c9c: - r2 = readPages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff]; + case 0x5069c: + r2 = readPages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff]; r4 = r21 + r0; r6 = r20 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x59cb0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x506b0; return; - case 0x59cb0: - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x59e3c; - run_59e00(); return; + case 0x506b0: + if (r2 <= 0) { + /* Next insn is delay slot */ + pc = 0x5083c; + run_50800(); + return; } - r3 = readPages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff]; + r3 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; r20 = r20 + r2; r18 = r18 - r2; r2 = r3 - r2; - writePages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff] = r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x59c7c; + writePages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff] = r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x5067c; continue; } - case 0x59cd4: + case 0x506d4: r2 = r0 + r0; - case 0x59cd8: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r30 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r23 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r22 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r21 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; + case 0x506d8: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x59d0c: + case 0x5070c: r4 = r21 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x59d1c; - pc=0x48600; - run_48600(); return; - case 0x59d1c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5a1ec; - run_5a000(); return; + /* Next insn is delay slot */ + r31 = 0x5071c; + pc = 0x4d400; + run_4d400(); + return; + case 0x5071c: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x50bec; + run_50a00(); + return; } - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; - r17 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; + r17 = readPages[(r19 + 0) >>> 12][((r19 + 0) >>> 2) & 0x3ff]; r3 = r2 & 2; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x59c74; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x50674; continue; } - case 0x59d38: + case 0x50738: r3 = r2 & 1; r22 = r0 + r0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x59e58; - run_59e00(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x50858; + run_50800(); + return; } r18 = r0 + r0; - case 0x59d4c: - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x59de8; + case 0x5074c: + if (r18 == r0) { + /* Next insn is delay slot */ + pc = 0x507e8; continue; } - case 0x59d54: + case 0x50754: r3 = r2 & 512; - r20 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x59f38; - run_59e00(); return; + r20 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x50938; + run_50800(); + return; } r3 = ((r18 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5a000; - run_5a000(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x50a00; + run_50a00(); + return; } r3 = r2 & 1152; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5a084; - run_5a000(); return; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x50a84; + run_50a00(); + return; } - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r23 = r20 + r0; r30 = r20 + r0; r20 = r18 + r0; - case 0x59d8c: + case 0x5078c: r5 = r22 + r0; r6 = r23 + r0; - /* Next insn is delay slot */ - r31=0x59d9c; - pc=0x5b600; - run_5b600(); return; - case 0x59d9c: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x5079c; + pc = 0x51600; + run_51600(); + return; + case 0x5079c: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r30 = r2 - r30; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r30; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r30; r3 = r2 + r23; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; r2 = r18 + r0; - case 0x59dbc: + case 0x507bc: r22 = r22 + r2; r18 = r18 - r2; - r2 = readPages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff]; + r2 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; r20 = r2 - r20; - writePages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff] = r20; - if(r20 == r0) { - /* Next insn is delay slot */ - pc=0x59cd4; + writePages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff] = r20; + if (r20 == r0) { + /* Next insn is delay slot */ + pc = 0x506d4; continue; } - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x59d54; + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x50754; continue; } - case 0x59de8: - r22 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - r18 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; + case 0x507e8: + r22 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + r18 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; r17 = r17 + 8; - /* Next insn is delay slot */ - pc=0x59d4c; + /* Next insn is delay slot */ + pc = 0x5074c; continue; - case 0x59dfc: - r20 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - case 0x59e00: - pc=0x59e00; + case 0x507fc: + r20 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + case 0x50800: + pc = 0x50800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_59e00() throws ExecutionException { /* 0x59e00 - 0x5a000 */ + + private final void run_50800() throws ExecutionException { /* 0x50800 - 0x50a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x59e00: - r18 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x50800: + r18 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; r17 = r17 + 8; - /* Next insn is delay slot */ - pc=0x59c7c; - run_59c00(); return; - case 0x59e10: - /* Next insn is delay slot */ - r31=0x59e18; - pc=0x40800; - run_40800(); return; - case 0x59e18: + /* Next insn is delay slot */ + pc = 0x5067c; + run_50600(); + return; + case 0x50810: + /* Next insn is delay slot */ + r31 = 0x50818; + pc = 0x46400; + run_46400(); + return; + case 0x50818: r30 = r2 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5a110; - run_5a000(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x50b10; + run_50a00(); + return; } - r5 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; + r5 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; r4 = r21 + r0; - /* Next insn is delay slot */ - r31=0x59e34; - pc=0x3ca00; - run_3ca00(); return; - case 0x59e34: + /* Next insn is delay slot */ + r31 = 0x50834; + pc = 0x42c00; + run_42c00(); + return; + case 0x50834: r2 = r0 + 12; - writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r2; - case 0x59e3c: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + writePages[(r21 + 0) >>> 12][((r21 + 0) >>> 2) & 0x3ff] = r2; + case 0x5083c: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 | 64; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x59cd8; - run_59c00(); return; - case 0x59e58: + /* Next insn is delay slot */ + pc = 0x506d8; + run_50600(); + return; + case 0x50858: r3 = r0 + r0; r30 = r0 + r0; r18 = r0 + r0; - case 0x59e64: - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x59f20; + case 0x50864: + if (r18 == r0) { + /* Next insn is delay slot */ + pc = 0x50920; continue; } - case 0x59e6c: - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5a054; - run_5a000(); return; + case 0x5086c: + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x50a54; + run_50a00(); + return; } - case 0x59e74: + case 0x50874: r2 = ((r18 & 0xffffffffL) < (r22 & 0xffffffffL)) ? 1 : 0; r23 = r22 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x59e88; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x50888; continue; } r23 = r18 + r0; - case 0x59e88: - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; + case 0x50888: + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; r20 = r23 + r0; r2 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - r6 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; - r7 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x59eb8; + r6 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; + r7 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x508b8; continue; } r8 = r6 + r7; r2 = r8 < r23 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5a13c; - run_5a000(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x50b3c; + run_50a00(); + return; } - case 0x59eb8: + case 0x508b8: r2 = r23 < r7 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x59fa0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x509a0; continue; } - r2 = readPages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff]; - r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; + r2 = readPages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff]; + r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; r4 = r21 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r3; r6 = r30 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x59ee0; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x508e0; return; - case 0x59ee0: + case 0x508e0: r20 = r2 + r0; - r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x59e3c; + r3 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + if (r2 <= 0) { + /* Next insn is delay slot */ + pc = 0x5083c; continue; } - case 0x59ef0: + case 0x508f0: r22 = r22 - r20; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x59fdc; + if (r22 == r0) { + /* Next insn is delay slot */ + pc = 0x509dc; continue; } - case 0x59efc: - r2 = readPages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff]; + case 0x508fc: + r2 = readPages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff]; r30 = r30 + r20; r18 = r18 - r20; r20 = r2 - r20; - writePages[(r19+8)>>>12][((r19+8)>>>2)&0x3ff] = r20; - if(r20 == r0) { - /* Next insn is delay slot */ - pc=0x59cd4; - run_59c00(); return; + writePages[(r19 + 8) >>> 12][((r19 + 8) >>> 2) & 0x3ff] = r20; + if (r20 == r0) { + /* Next insn is delay slot */ + pc = 0x506d4; + run_50600(); + return; } - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x59e6c; + if (r18 != r0) { + /* Next insn is delay slot */ + pc = 0x5086c; continue; } - case 0x59f20: - r30 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - r18 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; + case 0x50920: + r30 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + r18 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; r3 = r0 + r0; r17 = r17 + 8; - /* Next insn is delay slot */ - pc=0x59e64; + /* Next insn is delay slot */ + pc = 0x50864; continue; - case 0x59f38: - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; + case 0x50938: + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; r2 = ((r2 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x59f5c; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x5095c; continue; } r2 = ((r20 & 0xffffffffL) < (r18 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5a190; - run_5a000(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x50b90; + run_50a00(); + return; } - case 0x59f5c: - r7 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; + case 0x5095c: + r7 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; r2 = ((r18 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5a018; - run_5a000(); return; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x50a18; + run_50a00(); + return; } - r2 = readPages[(r16+36)>>>12][((r16+36)>>>2)&0x3ff]; - r5 = readPages[(r16+28)>>>12][((r16+28)>>>2)&0x3ff]; + r2 = readPages[(r16 + 36) >>> 12][((r16 + 36) >>> 2) & 0x3ff]; + r5 = readPages[(r16 + 28) >>> 12][((r16 + 28) >>> 2) & 0x3ff]; r4 = r21 + r0; r6 = r22 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x59f88; + /* Next insn is delay slot */ + pc = r2; + r31 = 0x50988; return; - case 0x59f88: + case 0x50988: r20 = r2 + r0; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x59e3c; + if (r2 <= 0) { + /* Next insn is delay slot */ + pc = 0x5083c; continue; } r2 = r20 + r0; - /* Next insn is delay slot */ - pc=0x59dbc; - run_59c00(); return; - case 0x59fa0: + /* Next insn is delay slot */ + pc = 0x507bc; + run_50600(); + return; + case 0x509a0: r6 = r23 + r0; r5 = r30 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x59fb4; - pc=0x5b600; - run_5b600(); return; - case 0x59fb4: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + r31 = 0x509b4; + pc = 0x51600; + run_51600(); + return; + case 0x509b4: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r22 = r22 - r20; r2 = r2 - r23; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r23 = r2 + r23; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r23; - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x59efc; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r23; + if (r22 != r0) { + /* Next insn is delay slot */ + pc = 0x508fc; continue; } - case 0x59fdc: + case 0x509dc: r4 = r21 + r0; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x59fec; - pc=0x39800; - run_39800(); return; - case 0x59fec: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x59e3c; + /* Next insn is delay slot */ + r31 = 0x509ec; + pc = 0x40c00; + run_40c00(); + return; + case 0x509ec: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x5083c; continue; } r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x59efc; + /* Next insn is delay slot */ + pc = 0x508fc; continue; - case 0x5a000: - pc=0x5a000; + case 0x50a00: + pc = 0x50a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5a000() throws ExecutionException { /* 0x5a000 - 0x5a200 */ + + private final void run_50a00() throws ExecutionException { /* 0x50a00 - 0x50c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5a000: + for (;;) { + switch (pc) { + case 0x50a00: r30 = r18 + r0; - r4 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + r4 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r20 = r18 + r0; r23 = r18 + r0; - /* Next insn is delay slot */ - pc=0x59d8c; - run_59c00(); return; - case 0x5a018: + /* Next insn is delay slot */ + pc = 0x5078c; + run_50600(); + return; + case 0x50a18: r5 = r22 + r0; r6 = r18 + r0; - /* Next insn is delay slot */ - r31=0x5a028; - pc=0x5b600; - run_5b600(); return; - case 0x5a028: - r2 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x50a28; + pc = 0x51600; + run_51600(); + return; + case 0x50a28: + r2 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r20 = r18 + r0; r2 = r2 - r18; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r2; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r2 = r2 + r18; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; r2 = r18 + r0; - /* Next insn is delay slot */ - pc=0x59dbc; - run_59c00(); return; - case 0x5a054: + /* Next insn is delay slot */ + pc = 0x507bc; + run_50600(); + return; + case 0x50a54: r4 = r30 + r0; r5 = r0 + 10; r6 = r18 + r0; - /* Next insn is delay slot */ - r31=0x5a068; - pc=0x5b400; - run_5b400(); return; - case 0x5a068: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5a1dc; + /* Next insn is delay slot */ + r31 = 0x50a68; + pc = 0x51400; + run_51400(); + return; + case 0x50a68: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x50bdc; continue; } r22 = r2 + 1; r22 = r22 - r30; r3 = r0 + 1; - /* Next insn is delay slot */ - pc=0x59e74; - run_59e00(); return; - case 0x5a084: - r4 = readPages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff]; - r5 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; + /* Next insn is delay slot */ + pc = 0x50874; + run_50800(); + return; + case 0x50a84: + r4 = readPages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff]; + r5 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; r6 = r4 << 1; - r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r4 = r6 + r4; r20 = r4 >>> 31; r23 = r3 - r5; @@ -71222,473 +66668,345 @@ public final class AcmeCrossAssembler extends UnixRuntime { r20 = r4 >> 1; r6 = r6 + r18; r4 = ((r20 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5a1d0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x50bd0; continue; } r20 = r6 + r0; - case 0x5a0c0: + case 0x50ac0: r2 = r2 & 1024; r4 = r21 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x59e10; - run_59e00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x50810; + run_50800(); + return; } r5 = r6 + r0; - /* Next insn is delay slot */ - r31=0x5a0dc; - pc=0x3ec00; - run_3ec00(); return; - case 0x5a0dc: + /* Next insn is delay slot */ + r31 = 0x50adc; + pc = 0x44a00; + run_44a00(); + return; + case 0x50adc: r30 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x59e34; - run_59e00(); return; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x50834; + run_50800(); + return; } - r5 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; + r5 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; r4 = r2 + r0; r6 = r23 + r0; - /* Next insn is delay slot */ - r31=0x5a0fc; - pc=0x48fdc; - run_48e00(); return; - case 0x5a0fc: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + /* Next insn is delay slot */ + r31 = 0x50afc; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x50afc: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r3 = r0 + -1153; r2 = r2 & r3; r2 = r2 | 128; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x5a110: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x50b10: r4 = r30 + r23; r3 = r20 - r23; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r30; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r20; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r4; + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r30; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = r20; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r4; r30 = r18 + r0; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r3; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; r20 = r18 + r0; r23 = r18 + r0; - /* Next insn is delay slot */ - pc=0x59d8c; - run_59c00(); return; - case 0x5a13c: + /* Next insn is delay slot */ + pc = 0x5078c; + run_50600(); + return; + case 0x50b3c: r6 = r8 + r0; r5 = r30 + r0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r8; - /* Next insn is delay slot */ - r31=0x5a154; - pc=0x5b600; - run_5b600(); return; - case 0x5a154: - r8 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r3; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r8; + /* Next insn is delay slot */ + r31 = 0x50b54; + pc = 0x51600; + run_51600(); + return; + case 0x50b54: + r8 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r4 = r21 + r0; r2 = r2 + r8; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x5a174; - pc=0x39800; - run_39800(); return; - case 0x5a174: - r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r8 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x59e3c; - run_59e00(); return; + /* Next insn is delay slot */ + r31 = 0x50b74; + pc = 0x40c00; + run_40c00(); + return; + case 0x50b74: + r3 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r8 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x5083c; + run_50800(); + return; } r20 = r8 + r0; - /* Next insn is delay slot */ - pc=0x59ef0; - run_59e00(); return; - case 0x5a190: + /* Next insn is delay slot */ + pc = 0x508f0; + run_50800(); + return; + case 0x50b90: r5 = r22 + r0; r6 = r20 + r0; - /* Next insn is delay slot */ - r31=0x5a1a0; - pc=0x5b600; - run_5b600(); return; - case 0x5a1a0: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x50ba0; + pc = 0x51600; + run_51600(); + return; + case 0x50ba0: + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r4 = r21 + r0; r2 = r2 + r20; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x5a1bc; - pc=0x39800; - run_39800(); return; - case 0x5a1bc: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x59e3c; - run_59e00(); return; + /* Next insn is delay slot */ + r31 = 0x50bbc; + pc = 0x40c00; + run_40c00(); + return; + case 0x50bbc: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x5083c; + run_50800(); + return; } r2 = r20 + r0; - /* Next insn is delay slot */ - pc=0x59dbc; - run_59c00(); return; - case 0x5a1d0: + /* Next insn is delay slot */ + pc = 0x507bc; + run_50600(); + return; + case 0x50bd0: r6 = r20 + r0; - /* Next insn is delay slot */ - pc=0x5a0c0; + /* Next insn is delay slot */ + pc = 0x50ac0; continue; - case 0x5a1dc: + case 0x50bdc: r22 = r18 + 1; r3 = r0 + 1; - /* Next insn is delay slot */ - pc=0x59e74; - run_59e00(); return; - case 0x5a1ec: + /* Next insn is delay slot */ + pc = 0x50874; + run_50800(); + return; + case 0x50bec: r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x59cd8; - run_59c00(); return; - case 0x5a200: - pc=0x5a200; + /* Next insn is delay slot */ + pc = 0x506d8; + run_50600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x50c00: + pc = 0x50c00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5a200() throws ExecutionException { /* 0x5a200 - 0x5a400 */ + + private final void run_50c00() throws ExecutionException { /* 0x50c00 - 0x50e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5a200: - /* Next insn is delay slot */ - pc=0x65400; - run_65400(); return; - case 0x5a400: - pc=0x5a400; + for (;;) { + switch (pc) { + case 0x50c00: + /* Next insn is delay slot */ + pc = 0x53c00; + run_53c00(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x50e00: + pc = 0x50e00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5a400() throws ExecutionException { /* 0x5a400 - 0x5a600 */ + + private final void run_50e00() throws ExecutionException { /* 0x50e00 - 0x51000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5a400: - r29 = r29 + -32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - r16 = r6 + r0; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x5a438; - continue; - } - r5 = 7 << 16; - r4 = r6 + r0; - r5 = r5 + 2076; - /* Next insn is delay slot */ - r31=0x5a430; - pc=0x42c00; - run_42c00(); return; - case 0x5a430: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5a45c; - continue; - } - case 0x5a438: - r17 = 7 << 16; - case 0x5a43c: - r17 = r17 + 208; - case 0x5a440: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r17 + r0; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x50e00: + r2 = 6 << 16; + r2 = r2 + -15432; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5a45c: - r17 = 7 << 16; - r4 = r16 + r0; - r5 = r17 + 208; - /* Next insn is delay slot */ - r31=0x5a470; - pc=0x42c00; - run_42c00(); return; - case 0x5a470: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5a43c; - continue; - } - r5 = 7 << 16; - r4 = r16 + r0; - r5 = r5 + -12264; - /* Next insn is delay slot */ - r31=0x5a48c; - pc=0x42c00; - run_42c00(); return; - case 0x5a48c: - r17 = r17 + 208; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5a440; - continue; - } - r17 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5a440; - continue; - case 0x5a600: - pc=0x5a600; + case 0x51000: + pc = 0x51000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5a600() throws ExecutionException { /* 0x5a600 - 0x5a800 */ + + private final void run_51000() throws ExecutionException { /* 0x51000 - 0x51200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5a600: - r2 = 7 << 16; - r2 = r2 + 12168; - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x51000: + r2 = readPages[(r28 + -31416) >>> 12][((r28 + -31416) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5a800: - pc=0x5a800; + case 0x51200: + pc = 0x51200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5a800() throws ExecutionException { /* 0x5a800 - 0x5aa00 */ + + private final void run_51200() throws ExecutionException { /* 0x51200 - 0x51400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5a800: - r2 = readPages[(r28+-30976)>>>12][((r28+-30976)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r31; + for (;;) { + switch (pc) { + case 0x51200: + r2 = 6 << 16; + r2 = r2 + -15400; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5aa00: - pc=0x5aa00; + case 0x51400: + pc = 0x51400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5aa00() throws ExecutionException { /* 0x5aa00 - 0x5ac00 */ + + private final void run_51400() throws ExecutionException { /* 0x51400 - 0x51600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5aa00: - r2 = 7 << 16; - r2 = r2 + 12136; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5ac00: - pc=0x5ac00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5ac00() throws ExecutionException { /* 0x5ac00 - 0x5ae00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5ac00: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5ae00: - pc=0x5ae00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5ae00() throws ExecutionException { /* 0x5ae00 - 0x5b000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5ae00: - r2 = 7 << 16; - r2 = r2 + 12200; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5b000: - pc=0x5b000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5b000() throws ExecutionException { /* 0x5b000 - 0x5b200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5b000: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x5a400; - run_5a400(); return; - case 0x5b200: - pc=0x5b200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5b200() throws ExecutionException { /* 0x5b200 - 0x5b400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5b200: - r2 = 7 << 16; - r2 = r2 + 12200; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5b400: - pc=0x5b400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5b400() throws ExecutionException { /* 0x5b400 - 0x5b600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5b400: + for (;;) { + switch (pc) { + case 0x51400: r2 = r4 & 3; r7 = r5 & 255; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5b45c; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x5145c; continue; } r2 = r6 + -1; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x5b440; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x51440; continue; } - /* Next insn is delay slot */ - pc=0x5b4b0; + /* Next insn is delay slot */ + pc = 0x514b0; continue; - case 0x5b424: + case 0x51424: r4 = r4 + 1; r3 = r4 & 3; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5b460; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x51460; continue; } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5b4b0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x514b0; continue; } r2 = r2 + -1; - case 0x5b440: - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + case 0x51440: + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r3 = tmp; - if(r3 != r7) { - /* Next insn is delay slot */ - pc=0x5b424; + if (r3 != r7) { + /* Next insn is delay slot */ + pc = 0x51424; continue; } - case 0x5b450: + case 0x51450: r2 = r4 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5b45c: + case 0x5145c: r2 = r6 + r0; - case 0x5b460: - r3 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5b4bc; + case 0x51460: + r3 = (r2 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x514bc; continue; } - case 0x5b46c: + case 0x5146c: r5 = r2 + -1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5b4b0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x514b0; continue; } - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r2 = tmp; - if(r2 == r7) { - /* Next insn is delay slot */ - pc=0x5b450; + if (r2 == r7) { + /* Next insn is delay slot */ + pc = 0x51450; continue; } r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5b4a4; + /* Next insn is delay slot */ + pc = 0x514a4; continue; - case 0x5b494: - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + case 0x51494: + addr = r4 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r3 = tmp; r2 = r2 + 1; - if(r3 == r7) { - /* Next insn is delay slot */ - pc=0x5b450; + if (r3 == r7) { + /* Next insn is delay slot */ + pc = 0x51450; continue; } - case 0x5b4a4: + case 0x514a4: r4 = r4 + 1; - if(r2 != r5) { - /* Next insn is delay slot */ - pc=0x5b494; + if (r2 != r5) { + /* Next insn is delay slot */ + pc = 0x51494; continue; } - case 0x5b4b0: + case 0x514b0: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5b4bc: + case 0x514bc: r5 = r5 & 255; r3 = r5 << 8; r3 = r3 | r5; @@ -71698,116 +67016,119 @@ public final class AcmeCrossAssembler extends UnixRuntime { r9 = r9 | r3; r8 = r8 | 65279; r6 = r6 | 32896; - case 0x5b4e0: - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; + case 0x514e0: + r3 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; r3 = r9 ^ r3; r5 = r3 + r8; r3 = ~(r0 | r3); r3 = r5 & r3; r3 = r3 & r6; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5b46c; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x5146c; continue; } r2 = r2 + -4; - r3 = (r2&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; + r3 = (r2 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; r4 = r4 + 4; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5b4e0; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x514e0; continue; } - /* Next insn is delay slot */ - pc=0x5b46c; + /* Next insn is delay slot */ + pc = 0x5146c; continue; - case 0x5b600: - pc=0x5b600; + case 0x51600: + pc = 0x51600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5b600() throws ExecutionException { /* 0x5b600 - 0x5b800 */ + + private final void run_51600() throws ExecutionException { /* 0x51600 - 0x51800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5b600: + for (;;) { + switch (pc) { + case 0x51600: r3 = ((r5 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; r2 = r4 + r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5b650; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x51650; continue; } r7 = r5 + r6; r3 = ((r4 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5b650; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x51650; continue; } r3 = r4 + r6; r5 = r3 - r6; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x5b748; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x51748; continue; } - case 0x5b630: + case 0x51630: r7 = r7 + -1; - addr=r7+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r7 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r4 = tmp; r3 = r3 + -1; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r3 != r5) { - /* Next insn is delay slot */ - pc=0x5b630; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r4 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r3 != r5) { + /* Next insn is delay slot */ + pc = 0x51630; continue; } - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5b650: - r3 = (r6&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5b750; + case 0x51650: + r3 = (r6 & 0xffffffffL) < (16 & 0xffffffffL) ? 1 : 0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x51750; continue; } r3 = r2 | r5; r3 = r3 & 3; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5b764; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x51764; continue; } r7 = r5 + r0; r3 = r2 + r0; r4 = r6 + r0; - case 0x5b678: - r8 = readPages[(r7+0)>>>12][((r7+0)>>>2)&0x3ff]; + case 0x51678: + r8 = readPages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff]; r7 = r7 + 16; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r8; - r8 = readPages[(r7+-12)>>>12][((r7+-12)>>>2)&0x3ff]; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r8; + r8 = readPages[(r7 + -12) >>> 12][((r7 + -12) >>> 2) & 0x3ff]; r3 = r3 + 16; - writePages[(r3+-12)>>>12][((r3+-12)>>>2)&0x3ff] = r8; - r8 = readPages[(r7+-8)>>>12][((r7+-8)>>>2)&0x3ff]; + writePages[(r3 + -12) >>> 12][((r3 + -12) >>> 2) & 0x3ff] = r8; + r8 = readPages[(r7 + -8) >>> 12][((r7 + -8) >>> 2) & 0x3ff]; r4 = r4 + -16; - writePages[(r3+-8)>>>12][((r3+-8)>>>2)&0x3ff] = r8; - r8 = readPages[(r7+-4)>>>12][((r7+-4)>>>2)&0x3ff]; - writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r8; - r8 = (r4&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x5b678; + writePages[(r3 + -8) >>> 12][((r3 + -8) >>> 2) & 0x3ff] = r8; + r8 = readPages[(r7 + -4) >>> 12][((r7 + -4) >>> 2) & 0x3ff]; + writePages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff] = r8; + r8 = (r4 & 0xffffffffL) < (16 & 0xffffffffL) ? 1 : 0; + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x51678; continue; } r4 = r6 + -16; @@ -71817,25 +67138,25 @@ public final class AcmeCrossAssembler extends UnixRuntime { r10 = r6 & 15; r3 = r2 + r4; r5 = r5 + r4; - r4 = (r10&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x5b778; + r4 = (r10 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x51778; continue; } r8 = r5 + r0; r7 = r3 + r0; r4 = r10 + r0; - case 0x5b6e8: + case 0x516e8: r8 = r8 + 4; - r9 = readPages[(r8+-4)>>>12][((r8+-4)>>>2)&0x3ff]; + r9 = readPages[(r8 + -4) >>> 12][((r8 + -4) >>> 2) & 0x3ff]; r7 = r7 + 4; r4 = r4 + -4; - writePages[(r7+-4)>>>12][((r7+-4)>>>2)&0x3ff] = r9; - r9 = (r4&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x5b6e8; + writePages[(r7 + -4) >>> 12][((r7 + -4) >>> 2) & 0x3ff] = r9; + r9 = (r4 & 0xffffffffL) < (4 & 0xffffffffL) ? 1 : 0; + if (r9 == r0) { + /* Next insn is delay slot */ + pc = 0x516e8; continue; } r4 = r10 + -4; @@ -71845,698 +67166,574 @@ public final class AcmeCrossAssembler extends UnixRuntime { r6 = r6 & 3; r3 = r3 + r4; r5 = r5 + r4; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x5b770; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x51770; continue; } - case 0x5b72c: + case 0x5172c: r6 = r3 + r6; - case 0x5b730: + case 0x51730: r5 = r5 + 1; - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r5 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r7 = tmp; r3 = r3 + 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r7&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r3 != r6) { - /* Next insn is delay slot */ - pc=0x5b730; + addr = r3 + -1; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r7 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + if (r3 != r6) { + /* Next insn is delay slot */ + pc = 0x51730; continue; } - case 0x5b748: - /* Next insn is delay slot */ - pc=r31; + case 0x51748: + /* Next insn is delay slot */ + pc = r31; return; - case 0x5b750: + case 0x51750: r3 = r2 + r0; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x5b72c; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x5172c; continue; } - /* Next insn is delay slot */ - pc=0x5b770; + /* Next insn is delay slot */ + pc = 0x51770; continue; - case 0x5b764: + case 0x51764: r3 = r2 + r0; - /* Next insn is delay slot */ - pc=0x5b72c; + /* Next insn is delay slot */ + pc = 0x5172c; continue; - case 0x5b770: - /* Next insn is delay slot */ - pc=r31; + case 0x51770: + /* Next insn is delay slot */ + pc = r31; return; - case 0x5b778: + case 0x51778: r6 = r10 + r0; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x5b72c; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x5172c; continue; } - /* Next insn is delay slot */ - pc=0x5b770; + /* Next insn is delay slot */ + pc = 0x51770; continue; - case 0x5b800: - pc=0x5b800; + case 0x51800: + pc = 0x51800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5b800() throws ExecutionException { /* 0x5b800 - 0x5ba00 */ + + private final void run_51800() throws ExecutionException { /* 0x51800 - 0x51a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5b800: - r2 = readPages[(r4+76)>>>12][((r4+76)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x51800: + r2 = readPages[(r4 + 76) >>> 12][((r4 + 76) >>> 2) & 0x3ff]; r29 = r29 + -32; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; r16 = r4 + r0; r17 = r5 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5b870; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x51870; continue; } - case 0x5b828: + case 0x51828: r3 = r17 << 2; r3 = r2 + r3; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5b898; + r2 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x51898; continue; } - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - case 0x5b84c: - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r0; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - case 0x5b854: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + r4 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r4; + case 0x5184c: + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r0; + case 0x51854: + r31 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5b870: + case 0x51870: r5 = r0 + 4; r6 = r0 + 33; - /* Next insn is delay slot */ - r31=0x5b880; - pc=0x65600; - run_65600(); return; - case 0x5b880: - writePages[(r16+76)>>>12][((r16+76)>>>2)&0x3ff] = r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5b828; + /* Next insn is delay slot */ + r31 = 0x51880; + pc = 0x53e00; + run_53e00(); + return; + case 0x51880: + writePages[(r16 + 76) >>> 12][((r16 + 76) >>> 2) & 0x3ff] = r2; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x51828; continue; } - case 0x5b88c: + case 0x5188c: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5b854; + /* Next insn is delay slot */ + pc = 0x51854; continue; - case 0x5b898: + case 0x51898: r18 = r0 + 1; - r18 = r18 << (r17&0x1f); + r18 = r18 << (r17 & 0x1f); r6 = r18 + 5; r4 = r16 + r0; r5 = r0 + 1; r6 = r6 << 2; - /* Next insn is delay slot */ - r31=0x5b8b8; - pc=0x65600; - run_65600(); return; - case 0x5b8b8: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5b88c; + /* Next insn is delay slot */ + r31 = 0x518b8; + pc = 0x53e00; + run_53e00(); + return; + case 0x518b8: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x5188c; continue; } - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r17; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r18; - /* Next insn is delay slot */ - pc=0x5b84c; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r17; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r18; + /* Next insn is delay slot */ + pc = 0x5184c; continue; - case 0x5ba00: - pc=0x5ba00; + case 0x51a00: + pc = 0x51a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5ba00() throws ExecutionException { /* 0x5ba00 - 0x5bc00 */ + + private final void run_51a00() throws ExecutionException { /* 0x51a00 - 0x51c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5ba00: - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x5ba28; + for (;;) { + switch (pc) { + case 0x51a00: + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x51a28; continue; } - r2 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; - r3 = readPages[(r4+76)>>>12][((r4+76)>>>2)&0x3ff]; + r2 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; + r3 = readPages[(r4 + 76) >>> 12][((r4 + 76) >>> 2) & 0x3ff]; r2 = r2 << 2; r2 = r3 + r2; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r3; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r5; - case 0x5ba28: - /* Next insn is delay slot */ - pc=r31; + r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + writePages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r5; + case 0x51a28: + /* Next insn is delay slot */ + pc = r31; return; - case 0x5bc00: - pc=0x5bc00; + case 0x51c00: + pc = 0x51c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5bc00() throws ExecutionException { /* 0x5bc00 - 0x5be00 */ + + private final void run_51c00() throws ExecutionException { /* 0x51c00 - 0x51e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5bc00: + for (;;) { + switch (pc) { + case 0x51c00: r29 = r29 + -48; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; - r16 = readPages[(r5+16)>>>12][((r5+16)>>>2)&0x3ff]; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + r16 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r19; r18 = r4 + r0; r17 = r5 + r0; r3 = r5 + 20; r8 = r0 + r0; - case 0x5bc2c: - r11 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + case 0x51c2c: + r11 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r8 = r8 + 1; - r9 = r11 & 65535; - { long hilo = (r9) * r6; hi = (int) (hilo >>> 32); lo = (int) hilo; } + r9 = r11 & 65535; { + long hilo = (long) (r9) * ((long) r6); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r11 = r11 >>> 16; r3 = r3 + 4; r9 = lo; r9 = r9 + r7; - r7 = r9 >>> 16; - { long hilo = (r11) * r6; hi = (int) (hilo >>> 32); lo = (int) hilo; } + r7 = r9 >>> 16; { + long hilo = (long) (r11) * ((long) r6); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r9 = r9 & 65535; r11 = lo; r10 = r7 + r11; r7 = r10 >>> 16; r10 = r10 << 16; r9 = r10 + r9; - writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r9; + writePages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff] = r9; r9 = r8 < r16 ? 1 : 0; - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x5bc2c; + if (r9 != r0) { + /* Next insn is delay slot */ + pc = 0x51c2c; continue; } - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x5bcb0; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x51cb0; continue; } - r2 = readPages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff]; + r2 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; r2 = r16 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5bcd4; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x51cd4; continue; } - case 0x5bc98: + case 0x51c98: r2 = r16 + 4; r2 = r2 << 2; r2 = r17 + r2; r16 = r16 + 1; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r7; - writePages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff] = r16; - case 0x5bcb0: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r7; + writePages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = r16; + case 0x51cb0: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r2 = r17 + r0; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5bcd4: - r5 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; + case 0x51cd4: + r5 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; r4 = r18 + r0; r5 = r5 + 1; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x5bcec; - pc=0x5b800; - run_5b800(); return; - case 0x5bcec: - r6 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r7; + /* Next insn is delay slot */ + r31 = 0x51cec; + pc = 0x51800; + run_51800(); + return; + case 0x51cec: + r6 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; r5 = r17 + 12; r6 = r6 + 2; r4 = r2 + 12; r6 = r6 << 2; r19 = r2 + r0; - /* Next insn is delay slot */ - r31=0x5bd0c; - pc=0x48fdc; - run_48e00(); return; - case 0x5bd0c: - r2 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - r3 = readPages[(r18+76)>>>12][((r18+76)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x51d0c; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x51d0c: + r2 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + r3 = readPages[(r18 + 76) >>> 12][((r18 + 76) >>> 2) & 0x3ff]; r2 = r2 << 2; r2 = r3 + r2; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r7 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r3; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r17; + r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r7 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r17; r17 = r19 + r0; - /* Next insn is delay slot */ - pc=0x5bc98; + /* Next insn is delay slot */ + pc = 0x51c98; continue; - case 0x5be00: - pc=0x5be00; + case 0x51e00: + pc = 0x51e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5be00() throws ExecutionException { /* 0x5be00 - 0x5c000 */ + + private final void run_51e00() throws ExecutionException { /* 0x51e00 - 0x52000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5be00: - r29 = r29 + -48; - r2 = r0 + 9; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - r17 = r4 + r0; - r4 = r7 + 8; - if(r2 != r0) { - /* Next insn is delay slot */ - hi = r4%r2; lo = r4/r2; - pc=0x5be20; - continue; - } - hi = r4%r2; lo = r4/r2; - throw new ExecutionException("Break"); - case 0x5be20: - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - r20 = r5 + r0; - r18 = r6 + r0; - r19 = r7 + r0; - r4 = lo; - r2 = r4 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5bf4c; - continue; - } - r2 = r0 + 1; - r5 = r0 + r0; - case 0x5be5c: - r2 = r2 << 1; - r8 = r2 < r4 ? 1 : 0; - r5 = r5 + 1; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x5be5c; - continue; - } - case 0x5be70: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x5be7c; - pc=0x5b800; - run_5b800(); return; - case 0x5be7c: - r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = r3; - r3 = r0 + 1; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; - r3 = r18 < 10 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5bf3c; - continue; - } - r21 = r20 + 9; - r16 = r21 + r0; - r20 = r20 + r18; - case 0x5bea8: - r16 = r16 + 1; - addr=r16+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r7 = tmp; - r4 = r17 + r0; - r5 = r2 + r0; - r6 = r0 + 10; - r7 = r7 + -48; - /* Next insn is delay slot */ - r31=0x5bec8; - pc=0x5bc00; - run_5bc00(); return; - case 0x5bec8: - if(r16 != r20) { - /* Next insn is delay slot */ - pc=0x5bea8; - continue; - } - r16 = r21 + r18; - r16 = r16 + -8; - case 0x5bed8: - r3 = r18 < r19 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5bf14; - continue; - } - r18 = r19 - r18; - r18 = r16 + r18; - case 0x5beec: - r16 = r16 + 1; - addr=r16+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r7 = tmp; - r4 = r17 + r0; - r5 = r2 + r0; - r6 = r0 + 10; - r7 = r7 + -48; - /* Next insn is delay slot */ - r31=0x5bf0c; - pc=0x5bc00; - run_5bc00(); return; - case 0x5bf0c: - if(r16 != r18) { - /* Next insn is delay slot */ - pc=0x5beec; - continue; - } - case 0x5bf14: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5bf3c: - r16 = r20 + 10; - r18 = r0 + 9; - /* Next insn is delay slot */ - pc=0x5bed8; - continue; - case 0x5bf4c: - r5 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5be70; - continue; - case 0x5c000: - pc=0x5c000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5c000() throws ExecutionException { /* 0x5c000 - 0x5c200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5c000: + for (;;) { + switch (pc) { + case 0x51e00: r2 = 65535 << 16; r2 = r4 & r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5c084; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x51e84; continue; } r4 = r4 << 16; r2 = r0 + 16; - case 0x5c018: + case 0x51e18: r3 = 65280 << 16; r3 = r4 & r3; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5c030; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x51e30; continue; } r2 = r2 + 8; r4 = r4 << 8; - case 0x5c030: + case 0x51e30: r3 = 61440 << 16; r3 = r4 & r3; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5c048; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x51e48; continue; } r2 = r2 + 4; r4 = r4 << 4; - case 0x5c048: + case 0x51e48: r3 = 49152 << 16; r3 = r4 & r3; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5c060; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x51e60; continue; } r2 = r2 + 2; r4 = r4 << 2; - case 0x5c060: - if(r4 < 0) { - /* Next insn is delay slot */ - pc=0x5c07c; + case 0x51e60: + if (r4 < 0) { + /* Next insn is delay slot */ + pc = 0x51e7c; continue; } r3 = 16384 << 16; r4 = r4 & r3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x5c090; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x51e90; continue; } r2 = r0 + 32; - case 0x5c07c: - /* Next insn is delay slot */ - pc=r31; + case 0x51e7c: + /* Next insn is delay slot */ + pc = r31; return; - case 0x5c084: + case 0x51e84: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5c018; + /* Next insn is delay slot */ + pc = 0x51e18; continue; - case 0x5c090: + case 0x51e90: r2 = r2 + 1; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5c200: - pc=0x5c200; + case 0x52000: + pc = 0x52000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5c200() throws ExecutionException { /* 0x5c200 - 0x5c400 */ + + private final void run_52000() throws ExecutionException { /* 0x52000 - 0x52200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5c200: - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x52000: + r3 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; r2 = r3 & 7; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5c240; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x52040; continue; } r2 = r3 & 1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5c2d0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x520d0; continue; } r2 = r3 & 2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5c2dc; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x520dc; continue; } r3 = r3 >>> 2; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r3; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r3; r2 = r0 + 2; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5c240: + case 0x52040: r2 = r3 & 65535; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5c2b0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x520b0; continue; } r2 = r0 + r0; - case 0x5c250: + case 0x52050: r5 = r3 & 255; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x5c264; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x52064; continue; } r2 = r2 + 8; r3 = r3 >>> 8; - case 0x5c264: + case 0x52064: r5 = r3 & 15; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x5c278; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x52078; continue; } r2 = r2 + 4; r3 = r3 >>> 4; - case 0x5c278: + case 0x52078: r5 = r3 & 3; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x5c28c; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x5208c; continue; } r2 = r2 + 2; r3 = r3 >>> 2; - case 0x5c28c: + case 0x5208c: r5 = r3 & 1; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x5c2c4; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x520c4; continue; } r3 = r3 >>> 1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5c2c0; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x520c0; continue; } r2 = r0 + 32; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5c2b0: + case 0x520b0: r3 = r3 >>> 16; r2 = r0 + 16; - /* Next insn is delay slot */ - pc=0x5c250; + /* Next insn is delay slot */ + pc = 0x52050; continue; - case 0x5c2c0: + case 0x520c0: r2 = r2 + 1; - case 0x5c2c4: - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=r31; + case 0x520c4: + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r3; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5c2d0: + case 0x520d0: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5c2dc: + case 0x520dc: r3 = r3 >>> 1; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r3; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r3; r2 = r0 + 1; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5c400: - pc=0x5c400; + case 0x52200: + pc = 0x52200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5c400() throws ExecutionException { /* 0x5c400 - 0x5c600 */ + + private final void run_52200() throws ExecutionException { /* 0x52200 - 0x52400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5c400: + for (;;) { + switch (pc) { + case 0x52200: r29 = r29 + -24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; r16 = r5 + r0; r5 = r0 + 1; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x5c41c; - pc=0x5b800; - run_5b800(); return; - case 0x5c41c: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x5221c; + pc = 0x51800; + run_51800(); + return; + case 0x5221c: + r31 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r4 = r0 + 1; - writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = r16; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r4; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + writePages[(r2 + 20) >>> 12][((r2 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r4; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5c600: - pc=0x5c600; + case 0x52400: + pc = 0x52400; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5c600() throws ExecutionException { /* 0x5c600 - 0x5c800 */ + + private final void run_52400() throws ExecutionException { /* 0x52400 - 0x52600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5c600: + for (;;) { + switch (pc) { + case 0x52400: r29 = r29 + -40; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - r19 = readPages[(r6+16)>>>12][((r6+16)>>>2)&0x3ff]; - r18 = readPages[(r5+16)>>>12][((r5+16)>>>2)&0x3ff]; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + r19 = readPages[(r6 + 16) >>> 12][((r6 + 16) >>> 2) & 0x3ff]; + r18 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; r2 = r18 < r19 ? 1 : 0; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; r17 = r5 + r0; r20 = r6 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5c64c; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x5244c; continue; } r2 = r18 + r0; @@ -72544,43 +67741,44 @@ public final class AcmeCrossAssembler extends UnixRuntime { r18 = r19 + r0; r20 = r5 + r0; r19 = r2 + r0; - case 0x5c64c: - r2 = readPages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff]; + case 0x5244c: + r2 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; r16 = r18 + r19; r2 = r2 < r16 ? 1 : 0; - r5 = readPages[(r17+4)>>>12][((r17+4)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5c668; + r5 = readPages[(r17 + 4) >>> 12][((r17 + 4) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x52468; continue; } r5 = r5 + 1; - case 0x5c668: - /* Next insn is delay slot */ - r31=0x5c670; - pc=0x5b800; - run_5b800(); return; - case 0x5c670: + case 0x52468: + /* Next insn is delay slot */ + r31 = 0x52470; + pc = 0x51800; + run_51800(); + return; + case 0x52470: r13 = r2 + 20; r14 = r16 << 2; r14 = r13 + r14; r4 = ((r13 & 0xffffffffL) < (r14 & 0xffffffffL)) ? 1 : 0; r3 = r13 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5c6a0; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x524a0; continue; } - case 0x5c68c: - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r0; + case 0x5248c: + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r0; r3 = r3 + 4; r4 = ((r3 & 0xffffffffL) < (r14 & 0xffffffffL)) ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x5c68c; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x5248c; continue; } - case 0x5c6a0: + case 0x524a0: r12 = r20 + 20; r15 = r19 << 2; r15 = r12 + r15; @@ -72588,40 +67786,47 @@ public final class AcmeCrossAssembler extends UnixRuntime { r11 = r18 << 2; r3 = ((r12 & 0xffffffffL) < (r15 & 0xffffffffL)) ? 1 : 0; r11 = r24 + r11; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5c804; - run_5c800(); return; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x52604; + run_52600(); + return; } - case 0x5c6c4: - r9 = readPages[(r12+0)>>>12][((r12+0)>>>2)&0x3ff]; + case 0x524c4: + r9 = readPages[(r12 + 0) >>> 12][((r12 + 0) >>> 2) & 0x3ff]; r8 = r9 & 65535; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x5c760; + if (r8 == r0) { + /* Next insn is delay slot */ + pc = 0x52560; continue; } r4 = r13 + r0; r3 = r24 + r0; r9 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5c6f0; + /* Next insn is delay slot */ + pc = 0x524f0; continue; - case 0x5c6ec: + case 0x524ec: r4 = r7 + r0; - case 0x5c6f0: - r6 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r7 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r5 = r6 & 65535; - { long hilo = (r5) * r8; hi = (int) (hilo >>> 32); lo = (int) hilo; } + case 0x524f0: + r6 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r7 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r5 = r6 & 65535; { + long hilo = (long) (r5) * ((long) r8); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r6 = r6 >>> 16; r10 = r7 & 65535; r7 = r7 >>> 16; r3 = r3 + 4; r5 = lo; r5 = r5 + r10; - r5 = r5 + r9; - { long hilo = (r6) * r8; hi = (int) (hilo >>> 32); lo = (int) hilo; } + r5 = r5 + r9; { + long hilo = (long) (r6) * ((long) r8); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r9 = r5 >>> 16; r5 = r5 & 65535; r6 = lo; @@ -72630,40 +67835,43 @@ public final class AcmeCrossAssembler extends UnixRuntime { r9 = r6 >>> 16; r6 = r6 << 16; r5 = r6 | r5; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r5; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r5; r5 = ((r3 & 0xffffffffL) < (r11 & 0xffffffffL)) ? 1 : 0; r7 = r4 + 4; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x5c6ec; + if (r5 != r0) { + /* Next insn is delay slot */ + pc = 0x524ec; continue; } - writePages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff] = r9; - r9 = readPages[(r12+0)>>>12][((r12+0)>>>2)&0x3ff]; - case 0x5c760: + writePages[(r4 + 4) >>> 12][((r4 + 4) >>> 2) & 0x3ff] = r9; + r9 = readPages[(r12 + 0) >>> 12][((r12 + 0) >>> 2) & 0x3ff]; + case 0x52560: r9 = r9 >>> 16; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x5c7f0; + if (r9 == r0) { + /* Next insn is delay slot */ + pc = 0x525f0; continue; } - r4 = readPages[(r13+0)>>>12][((r13+0)>>>2)&0x3ff]; + r4 = readPages[(r13 + 0) >>> 12][((r13 + 0) >>> 2) & 0x3ff]; r5 = r13 + r0; r7 = r4 + r0; r3 = r24 + r0; r10 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5c78c; + /* Next insn is delay slot */ + pc = 0x5258c; continue; - case 0x5c788: + case 0x52588: r5 = r8 + r0; - case 0x5c78c: - addr=r3+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x5258c: + addr = r3 + 2; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r6 = tmp; - r7 = r7 >>> 16; - { long hilo = (r6) * r9; hi = (int) (hilo >>> 32); lo = (int) hilo; } + r7 = r7 >>> 16; { + long hilo = (long) (r6) * ((long) r9); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r4 = r4 & 65535; r3 = r3 + 4; r8 = r5 + 4; @@ -72672,13 +67880,16 @@ public final class AcmeCrossAssembler extends UnixRuntime { r6 = r6 + r10; r7 = r6 << 16; r4 = r7 | r4; - writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r4; - addr=r3+-4; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + writePages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff] = r4; + addr = r3 + -4; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r4 = tmp; - r7 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; - { long hilo = (r4) * r9; hi = (int) (hilo >>> 32); lo = (int) hilo; } + r7 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; { + long hilo = (long) (r4) * ((long) r9); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r10 = r7 & 65535; r6 = r6 >>> 16; r4 = lo; @@ -72686,417 +67897,430 @@ public final class AcmeCrossAssembler extends UnixRuntime { r4 = r4 + r6; r6 = ((r3 & 0xffffffffL) < (r11 & 0xffffffffL)) ? 1 : 0; r10 = r4 >>> 16; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x5c788; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x52588; continue; } - writePages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff] = r4; - case 0x5c7f0: + writePages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff] = r4; + case 0x525f0: r12 = r12 + 4; r3 = ((r12 & 0xffffffffL) < (r15 & 0xffffffffL)) ? 1 : 0; r13 = r13 + 4; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5c6c4; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x524c4; continue; } - case 0x5c800: - pc=0x5c800; + case 0x52600: + pc = 0x52600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5c800() throws ExecutionException { /* 0x5c800 - 0x5ca00 */ + + private final void run_52600() throws ExecutionException { /* 0x52600 - 0x52800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5c800: - case 0x5c804: - if(r16 <= 0) { - /* Next insn is delay slot */ - pc=0x5c844; + for (;;) { + switch (pc) { + case 0x52600: + case 0x52604: + if (r16 <= 0) { + /* Next insn is delay slot */ + pc = 0x52644; continue; } - r4 = readPages[(r14+-4)>>>12][((r14+-4)>>>2)&0x3ff]; + r4 = readPages[(r14 + -4) >>> 12][((r14 + -4) >>> 2) & 0x3ff]; r3 = r14 + -4; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5c838; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x52638; continue; } - /* Next insn is delay slot */ - pc=0x5c844; + /* Next insn is delay slot */ + pc = 0x52644; continue; - case 0x5c824: + case 0x52624: r3 = r3 + -4; - r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x5c844; + r4 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + if (r4 != r0) { + /* Next insn is delay slot */ + pc = 0x52644; continue; } - case 0x5c838: + case 0x52638: r16 = r16 + -1; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x5c824; + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x52624; continue; } - case 0x5c844: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + case 0x52644: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r16; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5ca00: - pc=0x5ca00; + case 0x52800: + pc = 0x52800; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5ca00() throws ExecutionException { /* 0x5ca00 - 0x5cc00 */ + + private final void run_52800() throws ExecutionException { /* 0x52800 - 0x52a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5ca00: + for (;;) { + switch (pc) { + case 0x52800: r29 = r29 + -40; r2 = r6 & 3; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; r19 = r4 + r0; r18 = r5 + r0; r16 = r6 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5cb24; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x52924; continue; } - case 0x5ca30: + case 0x52830: r16 = r16 >> 2; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x5cacc; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x528cc; continue; } - r17 = readPages[(r19+72)>>>12][((r19+72)>>>2)&0x3ff]; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x5cb54; + r17 = readPages[(r19 + 72) >>> 12][((r19 + 72) >>> 2) & 0x3ff]; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x52954; continue; } - case 0x5ca4c: + case 0x5284c: r3 = r16 & 1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5ca84; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x52884; continue; } - case 0x5ca58: + case 0x52858: r16 = r16 >> 1; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x5cacc; + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x528cc; continue; } - case 0x5ca64: - r2 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5caf0; + case 0x52864: + r2 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x528f0; continue; } r17 = r2 + r0; - case 0x5ca78: + case 0x52878: r3 = r16 & 1; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5ca58; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x52858; continue; } - case 0x5ca84: + case 0x52884: r4 = r19 + r0; r5 = r18 + r0; r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x5ca98; - pc=0x5c600; - run_5c600(); return; - case 0x5ca98: - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x5cb18; + /* Next insn is delay slot */ + r31 = 0x52898; + pc = 0x52400; + run_52400(); + return; + case 0x52898: + if (r18 == r0) { + /* Next insn is delay slot */ + pc = 0x52918; continue; } - r3 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; - r4 = readPages[(r19+76)>>>12][((r19+76)>>>2)&0x3ff]; + r3 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r19 + 76) >>> 12][((r19 + 76) >>> 2) & 0x3ff]; r3 = r3 << 2; r3 = r4 + r3; - r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + r4 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r16 = r16 >> 1; - writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r4; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r18; + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r4; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r18; r18 = r2 + r0; - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x5ca64; + if (r16 != r0) { + /* Next insn is delay slot */ + pc = 0x52864; continue; } - case 0x5cacc: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; + case 0x528cc: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; r2 = r18 + r0; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5caf0: + case 0x528f0: r5 = r17 + r0; r6 = r17 + r0; r4 = r19 + r0; - /* Next insn is delay slot */ - r31=0x5cb04; - pc=0x5c600; - run_5c600(); return; - case 0x5cb04: - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; + /* Next insn is delay slot */ + r31 = 0x52904; + pc = 0x52400; + run_52400(); + return; + case 0x52904: + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r2; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r0; r17 = r2 + r0; - /* Next insn is delay slot */ - pc=0x5ca78; + /* Next insn is delay slot */ + pc = 0x52878; continue; - case 0x5cb18: + case 0x52918: r18 = r2 + r0; - /* Next insn is delay slot */ - pc=0x5ca58; + /* Next insn is delay slot */ + pc = 0x52858; continue; - case 0x5cb24: + case 0x52924: r2 = r2 + -1; - r3 = 7 << 16; - r3 = r3 + 2084; + r3 = 6 << 16; + r3 = r3 + -26636; r2 = r2 << 2; r2 = r2 + r3; - r6 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; + r6 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; r7 = r0 + r0; - /* Next insn is delay slot */ - r31=0x5cb48; - pc=0x5bc00; - run_5bc00(); return; - case 0x5cb48: + /* Next insn is delay slot */ + r31 = 0x52948; + pc = 0x51c00; + run_51c00(); + return; + case 0x52948: r18 = r2 + r0; - /* Next insn is delay slot */ - pc=0x5ca30; + /* Next insn is delay slot */ + pc = 0x52830; continue; - case 0x5cb54: + case 0x52954: r4 = r19 + r0; r5 = r0 + 1; - /* Next insn is delay slot */ - r31=0x5cb64; - pc=0x5b800; - run_5b800(); return; - case 0x5cb64: + /* Next insn is delay slot */ + r31 = 0x52964; + pc = 0x51800; + run_51800(); + return; + case 0x52964: r17 = r2 + r0; r2 = r0 + 625; - writePages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff] = r2; + writePages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff] = r2; r2 = r0 + 1; - writePages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff] = r2; - writePages[(r19+72)>>>12][((r19+72)>>>2)&0x3ff] = r17; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x5ca4c; + writePages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = r2; + writePages[(r19 + 72) >>> 12][((r19 + 72) >>> 2) & 0x3ff] = r17; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x5284c; continue; - case 0x5cc00: - pc=0x5cc00; + case 0x52a00: + pc = 0x52a00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5cc00() throws ExecutionException { /* 0x5cc00 - 0x5ce00 */ + + private final void run_52a00() throws ExecutionException { /* 0x52a00 - 0x52c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5cc00: + for (;;) { + switch (pc) { + case 0x52a00: r29 = r29 + -48; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; r18 = r5 + r0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; - r20 = readPages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r20; + r20 = readPages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff]; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; r17 = r6 >> 5; r20 = r17 + r20; - r2 = readPages[(r18+8)>>>12][((r18+8)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; + r2 = readPages[(r18 + 8) >>> 12][((r18 + 8) >>> 2) & 0x3ff]; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; r16 = r20 + 1; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; r19 = r4 + r0; r4 = r2 < r16 ? 1 : 0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; r21 = r6 + r0; - r5 = readPages[(r5+4)>>>12][((r5+4)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5cc64; + r5 = readPages[(r5 + 4) >>> 12][((r5 + 4) >>> 2) & 0x3ff]; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x52a64; continue; } - case 0x5cc50: + case 0x52a50: r2 = r2 << 1; r7 = r2 < r16 ? 1 : 0; r5 = r5 + 1; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x5cc50; + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x52a50; continue; } - case 0x5cc64: + case 0x52a64: r4 = r19 + r0; - /* Next insn is delay slot */ - r31=0x5cc70; - pc=0x5b800; - run_5b800(); return; - case 0x5cc70: + /* Next insn is delay slot */ + r31 = 0x52a70; + pc = 0x51800; + run_51800(); + return; + case 0x52a70: r7 = r2 + 20; - if(r17 <= 0) { - /* Next insn is delay slot */ - pc=0x5cca0; + if (r17 <= 0) { + /* Next insn is delay slot */ + pc = 0x52aa0; continue; } r8 = r7 + r0; r3 = r0 + r0; - case 0x5cc84: + case 0x52a84: r8 = r8 + 4; r3 = r3 + 1; - writePages[(r8+-4)>>>12][((r8+-4)>>>2)&0x3ff] = r0; - if(r3 != r17) { - /* Next insn is delay slot */ - pc=0x5cc84; + writePages[(r8 + -4) >>> 12][((r8 + -4) >>> 2) & 0x3ff] = r0; + if (r3 != r17) { + /* Next insn is delay slot */ + pc = 0x52a84; continue; } r3 = r3 << 2; r7 = r7 + r3; - case 0x5cca0: - r10 = readPages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff]; + case 0x52aa0: + r10 = readPages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff]; r3 = r18 + 20; r10 = r10 << 2; r6 = r21 & 31; r10 = r3 + r10; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x5cd5c; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x52b5c; continue; } r4 = r0 + 32; r4 = r4 - r6; r9 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5ccd4; + /* Next insn is delay slot */ + pc = 0x52ad4; continue; - case 0x5ccd0: + case 0x52ad0: r7 = r8 + r0; - case 0x5ccd4: - r11 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + case 0x52ad4: + r11 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r3 = r3 + 4; - r11 = r11 << (r6&0x1f); + r11 = r11 << (r6 & 0x1f); r9 = r9 | r11; - writePages[(r7+0)>>>12][((r7+0)>>>2)&0x3ff] = r9; - r9 = readPages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff]; + writePages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff] = r9; + r9 = readPages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff]; r11 = ((r3 & 0xffffffffL) < (r10 & 0xffffffffL)) ? 1 : 0; r8 = r7 + 4; - r9 = r9 >>> (r4&0x1f); - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x5ccd0; + r9 = r9 >>> (r4 & 0x1f); + if (r11 != r0) { + /* Next insn is delay slot */ + pc = 0x52ad0; continue; } - writePages[(r7+4)>>>12][((r7+4)>>>2)&0x3ff] = r9; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x5cd10; + writePages[(r7 + 4) >>> 12][((r7 + 4) >>> 2) & 0x3ff] = r9; + if (r9 == r0) { + /* Next insn is delay slot */ + pc = 0x52b10; continue; } r16 = r20 + 2; - case 0x5cd10: - r3 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; - r4 = readPages[(r19+76)>>>12][((r19+76)>>>2)&0x3ff]; + case 0x52b10: + r3 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + r4 = readPages[(r19 + 76) >>> 12][((r19 + 76) >>> 2) & 0x3ff]; r3 = r3 << 2; r3 = r4 + r3; - r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + r4 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r16 = r16 + -1; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r16; - r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r4; - r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r18; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r16; + r21 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + writePages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff] = r4; + r20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r18; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5cd5c: + case 0x52b5c: r3 = r3 + 4; - r6 = readPages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff]; + r6 = readPages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff]; r7 = r7 + 4; - writePages[(r7+-4)>>>12][((r7+-4)>>>2)&0x3ff] = r6; + writePages[(r7 + -4) >>> 12][((r7 + -4) >>> 2) & 0x3ff] = r6; r6 = ((r3 & 0xffffffffL) < (r10 & 0xffffffffL)) ? 1 : 0; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x5cd10; + if (r6 == r0) { + /* Next insn is delay slot */ + pc = 0x52b10; continue; } r3 = r3 + 4; - r6 = readPages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff]; + r6 = readPages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff]; r7 = r7 + 4; - writePages[(r7+-4)>>>12][((r7+-4)>>>2)&0x3ff] = r6; + writePages[(r7 + -4) >>> 12][((r7 + -4) >>> 2) & 0x3ff] = r6; r6 = ((r3 & 0xffffffffL) < (r10 & 0xffffffffL)) ? 1 : 0; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x5cd5c; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x52b5c; continue; } - /* Next insn is delay slot */ - pc=0x5cd10; + /* Next insn is delay slot */ + pc = 0x52b10; continue; - case 0x5ce00: - pc=0x5ce00; + case 0x52c00: + pc = 0x52c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5ce00() throws ExecutionException { /* 0x5ce00 - 0x5d000 */ + + private final void run_52c00() throws ExecutionException { /* 0x52c00 - 0x52e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5ce00: - r2 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - r3 = readPages[(r5+16)>>>12][((r5+16)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x52c00: + r2 = readPages[(r4 + 16) >>> 12][((r4 + 16) >>> 2) & 0x3ff]; + r3 = readPages[(r5 + 16) >>> 12][((r5 + 16) >>> 2) & 0x3ff]; r2 = r2 - r3; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5ce78; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x52c78; continue; } r3 = r3 << 2; @@ -73104,109 +68328,113 @@ public final class AcmeCrossAssembler extends UnixRuntime { r5 = r5 + 20; r2 = r4 + r3; r5 = r5 + r3; - /* Next insn is delay slot */ - pc=0x5ce40; + /* Next insn is delay slot */ + pc = 0x52c40; continue; - case 0x5ce34: + case 0x52c34: r3 = ((r4 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5ce74; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x52c74; continue; } - case 0x5ce40: + case 0x52c40: r2 = r2 + -4; r5 = r5 + -4; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r6 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - if(r3 == r6) { - /* Next insn is delay slot */ - pc=0x5ce34; + r3 = readPages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff]; + r6 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; + if (r3 == r6) { + /* Next insn is delay slot */ + pc = 0x52c34; continue; } r3 = ((r3 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5ce80; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x52c80; continue; } r2 = r0 + 1; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5ce74: + case 0x52c74: r2 = r0 + r0; - case 0x5ce78: - /* Next insn is delay slot */ - pc=r31; + case 0x52c78: + /* Next insn is delay slot */ + pc = r31; return; - case 0x5ce80: + case 0x52c80: r2 = r0 + -1; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5d000: - pc=0x5d000; + case 0x52e00: + pc = 0x52e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5d000() throws ExecutionException { /* 0x5d000 - 0x5d200 */ + + private final void run_52e00() throws ExecutionException { /* 0x52e00 - 0x53000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5d000: + for (;;) { + switch (pc) { + case 0x52e00: r29 = r29 + -40; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; r18 = r4 + r0; r16 = r5 + r0; r4 = r5 + r0; r5 = r6 + r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; r17 = r6 + r0; - /* Next insn is delay slot */ - r31=0x5d034; - pc=0x5ce00; - run_5ce00(); return; - case 0x5d034: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5d1a4; + /* Next insn is delay slot */ + r31 = 0x52e34; + pc = 0x52c00; + run_52c00(); + return; + case 0x52e34: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x52fa4; continue; } - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x5d18c; + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x52f8c; continue; } r19 = r0 + r0; - case 0x5d048: - r5 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; + case 0x52e48: + r5 = readPages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff]; r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x5d058; - pc=0x5b800; - run_5b800(); return; - case 0x5d058: - r10 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - r13 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x52e58; + pc = 0x51800; + run_51800(); + return; + case 0x52e58: + r10 = readPages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff]; + r13 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; r4 = r16 + 20; r12 = r10 << 2; r7 = r17 + 20; r13 = r13 << 2; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r19; + writePages[(r2 + 12) >>> 12][((r2 + 12) >>> 2) & 0x3ff] = r19; r12 = r4 + r12; r13 = r7 + r13; r3 = r2 + 20; r5 = r0 + r0; - case 0x5d084: - r8 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r9 = readPages[(r7+0)>>>12][((r7+0)>>>2)&0x3ff]; + case 0x52e84: + r8 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; + r9 = readPages[(r7 + 0) >>> 12][((r7 + 0) >>> 2) & 0x3ff]; r6 = r8 & 65535; r5 = r6 + r5; r11 = r9 & 65535; @@ -73224,22 +68452,22 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = r3 + 4; r8 = ((r7 & 0xffffffffL) < (r13 & 0xffffffffL)) ? 1 : 0; r4 = r4 + 4; - writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r6; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x5d084; + writePages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff] = r6; + if (r8 != r0) { + /* Next insn is delay slot */ + pc = 0x52e84; continue; } r7 = ((r4 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; r9 = r3 + r0; r11 = r4 + r0; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x5d148; + if (r7 == r0) { + /* Next insn is delay slot */ + pc = 0x52f48; continue; } - case 0x5d0f0: - r8 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; + case 0x52ef0: + r8 = readPages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff]; r4 = r4 + 4; r6 = r8 & 65535; r6 = r6 + r5; @@ -73252,10 +68480,10 @@ public final class AcmeCrossAssembler extends UnixRuntime { r6 = r7 | r6; r3 = r3 + 4; r7 = ((r4 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; - writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r6; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x5d0f0; + writePages[(r3 + -4) >>> 12][((r3 + -4) >>> 2) & 0x3ff] = r6; + if (r7 != r0) { + /* Next insn is delay slot */ + pc = 0x52ef0; continue; } r3 = ~(r0 | r11); @@ -73264,2062 +68492,321 @@ public final class AcmeCrossAssembler extends UnixRuntime { r3 = r3 + 1; r3 = r3 << 2; r3 = r9 + r3; - case 0x5d148: + case 0x52f48: r3 = r3 + -4; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x5d168; + if (r6 != r0) { + /* Next insn is delay slot */ + pc = 0x52f68; continue; } - case 0x5d154: + case 0x52f54: r3 = r3 + -4; - r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; + r4 = readPages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff]; r10 = r10 + -1; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5d154; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x52f54; continue; } - case 0x5d168: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r10; + case 0x52f68: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r10; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5d18c: + case 0x52f8c: r2 = r16 + r0; r19 = r0 + 1; r16 = r17 + r0; r17 = r2 + r0; - /* Next insn is delay slot */ - pc=0x5d048; + /* Next insn is delay slot */ + pc = 0x52e48; continue; - case 0x5d1a4: + case 0x52fa4: r4 = r18 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x5d1b4; - pc=0x5b800; - run_5b800(); return; - case 0x5d1b4: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x52fb4; + pc = 0x51800; + run_51800(); + return; + case 0x52fb4: + r31 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; r3 = r0 + 1; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff] = r3; - writePages[(r2+20)>>>12][((r2+20)>>>2)&0x3ff] = r0; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff] = r3; + writePages[(r2 + 20) >>> 12][((r2 + 20) >>> 2) & 0x3ff] = r0; r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5d200: - pc=0x5d200; + case 0x53000: + pc = 0x53000; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5d200() throws ExecutionException { /* 0x5d200 - 0x5d400 */ + + private final void run_53000() throws ExecutionException { /* 0x53000 - 0x53200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5d200: - r2 = f13; - r4 = 32752 << 16; - r2 = r2 & r4; - r3 = 64704 << 16; - r4 = r2 + r3; - if(r4 <= 0) { - /* Next insn is delay slot */ - pc=0x5d234; - continue; - } - r3 = r0 + r0; - f0 = r3; - r2 = r4 + r0; - f1 = r2; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5d234: - r4 = r0 - r4; - r4 = r4 >> 20; - r2 = r4 < 20 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5d290; - continue; - } - r5 = r4 < 51 ? 1 : 0; - r2 = r0 + r0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x5d280; - continue; - } - r5 = r0 + 51; - r4 = r5 - r4; - r5 = r0 + 1; - r4 = r5 << (r4&0x1f); - r3 = r4 + r0; - case 0x5d26c: - f0 = r3; - f1 = r2; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5d280: - r4 = r0 + 1; - r3 = r4 + r0; - /* Next insn is delay slot */ - pc=0x5d26c; - continue; - case 0x5d290: - r3 = r0 + r0; - r5 = 8 << 16; - f0 = r3; - r2 = r5 >> (r4&0x1f); - f1 = r2; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5d400: - pc=0x5d400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5d400() throws ExecutionException { /* 0x5d400 - 0x5d600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5d400: - r29 = r29 + -40; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r16 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - r16 = r16 << 2; - r18 = r4 + 20; - r16 = r18 + r16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - r17 = readPages[(r16+-4)>>>12][((r16+-4)>>>2)&0x3ff]; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - r4 = r17 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - r20 = r5 + r0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x5d440; - pc=0x5c000; - run_5c000(); return; - case 0x5d440: - r3 = r0 + 32; - r3 = r3 - r2; - writePages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff] = r3; - r3 = r2 < 11 ? 1 : 0; - r19 = r16 + -4; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5d4c0; - continue; - } - r3 = r0 + 11; - r3 = r3 - r2; - r5 = r17 >>> (r3&0x1f); - r4 = 16368 << 16; - r18 = ((r18 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; - r6 = r5 | r4; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x5d544; - continue; - } - r4 = readPages[(r16+-8)>>>12][((r16+-8)>>>2)&0x3ff]; - r3 = r4 >>> (r3&0x1f); - case 0x5d488: - r2 = r2 + 21; - r17 = r17 << (r2&0x1f); - r7 = r3 | r17; - case 0x5d494: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - f0 = r7; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - f1 = r6; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5d4c0: - r3 = ((r18 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5d51c; - continue; - } - r3 = r2 + -11; - r4 = r0 + r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5d530; - continue; - } - case 0x5d4dc: - r5 = r0 + 43; - r2 = r5 - r2; - r17 = r17 << (r3&0x1f); - r5 = 16368 << 16; - r17 = r17 | r5; - r18 = ((r18 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; - r5 = r4 >>> (r2&0x1f); - r6 = r17 | r5; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x5d550; - continue; - } - r5 = readPages[(r19+-4)>>>12][((r19+-4)>>>2)&0x3ff]; - r3 = r4 << (r3&0x1f); - r2 = r5 >>> (r2&0x1f); - r7 = r2 | r3; - /* Next insn is delay slot */ - pc=0x5d494; - continue; - case 0x5d51c: - r3 = r2 + -11; - r19 = r16 + -8; - r4 = readPages[(r16+-8)>>>12][((r16+-8)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5d4dc; - continue; - } - case 0x5d530: - r2 = 16368 << 16; - r6 = r17 | r2; - r7 = r4 + r0; - /* Next insn is delay slot */ - pc=0x5d494; - continue; - case 0x5d544: - r3 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5d488; - continue; - case 0x5d550: - r2 = r0 + r0; - r3 = r4 << (r3&0x1f); - r7 = r2 | r3; - /* Next insn is delay slot */ - pc=0x5d494; - continue; - case 0x5d600: - pc=0x5d600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5d600() throws ExecutionException { /* 0x5d600 - 0x5d800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5d600: + for (;;) { + switch (pc) { + case 0x53000: r29 = r29 + -48; r5 = r0 + 1; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; r16 = r6 + r0; r17 = r7 + r0; - /* Next insn is delay slot */ - r31=0x5d62c; - pc=0x5b800; - run_5b800(); return; - case 0x5d62c: + /* Next insn is delay slot */ + r31 = 0x5302c; + pc = 0x51800; + run_51800(); + return; + case 0x5302c: r18 = r2 + r0; r19 = r16 << 1; r2 = 15 << 16; r2 = r2 | 65535; r19 = r19 >>> 21; r2 = r2 & r16; - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x5d654; + if (r19 == r0) { + /* Next insn is delay slot */ + pc = 0x53054; continue; } r3 = 16 << 16; r2 = r2 | r3; - case 0x5d654: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x5d6f4; + case 0x53054: + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r2; + if (r17 == r0) { + /* Next insn is delay slot */ + pc = 0x530f4; continue; } r4 = r29 + 20; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - /* Next insn is delay slot */ - r31=0x5d670; - pc=0x5c200; - run_5c200(); return; - case 0x5d670: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5d764; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + /* Next insn is delay slot */ + r31 = 0x53070; + pc = 0x52000; + run_52000(); + return; + case 0x53070: + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x53164; continue; } - r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - writePages[(r18+20)>>>12][((r18+20)>>>2)&0x3ff] = r3; - case 0x5d684: - writePages[(r18+24)>>>12][((r18+24)>>>2)&0x3ff] = r16; + r3 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; + writePages[(r18 + 20) >>> 12][((r18 + 20) >>> 2) & 0x3ff] = r3; + case 0x53084: + writePages[(r18 + 24) >>> 12][((r18 + 24) >>> 2) & 0x3ff] = r16; r3 = r0 + 2; - r16 = (r16&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; + r16 = (r16 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; r16 = r3 - r16; - writePages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff] = r16; - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x5d720; + writePages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff] = r16; + if (r19 != r0) { + /* Next insn is delay slot */ + pc = 0x53120; continue; } - case 0x5d6a0: - r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; + case 0x530a0: + r3 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; r2 = r2 + -1074; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; r2 = r16 << 2; r2 = r18 + r2; - r4 = readPages[(r2+16)>>>12][((r2+16)>>>2)&0x3ff]; + r4 = readPages[(r2 + 16) >>> 12][((r2 + 16) >>> 2) & 0x3ff]; r16 = r16 << 5; - /* Next insn is delay slot */ - r31=0x5d6c4; - pc=0x5c000; - run_5c000(); return; - case 0x5d6c4: - r3 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r2 = r16 - r2; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r2 = r18 + r0; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x530c4; + pc = 0x51e00; + run_51e00(); return; - case 0x5d6f4: + case 0x530c4: + r3 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = r16 - r2; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r2 = r18 + r0; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x530f4: r4 = r29 + 16; - /* Next insn is delay slot */ - r31=0x5d700; - pc=0x5c200; - run_5c200(); return; - case 0x5d700: - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x53100; + pc = 0x52000; + run_52000(); + return; + case 0x53100: + r3 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r2 = r2 + 32; - writePages[(r18+20)>>>12][((r18+20)>>>2)&0x3ff] = r3; + writePages[(r18 + 20) >>> 12][((r18 + 20) >>> 2) & 0x3ff] = r3; r3 = r0 + 1; - writePages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff] = r3; + writePages[(r18 + 16) >>> 12][((r18 + 16) >>> 2) & 0x3ff] = r3; r16 = r0 + 1; - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x5d6a0; + if (r19 == r0) { + /* Next insn is delay slot */ + pc = 0x530a0; continue; } - case 0x5d720: - r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; + case 0x53120: + r3 = readPages[(r29 + 64) >>> 12][((r29 + 64) >>> 2) & 0x3ff]; r19 = r19 + -1075; r19 = r19 + r2; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r19; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r19; r3 = r0 + 53; r2 = r3 - r2; - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r3 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r3 = readPages[(r29 + 68) >>> 12][((r29 + 68) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + writePages[(r3 + 0) >>> 12][((r3 + 0) >>> 2) & 0x3ff] = r2; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; r2 = r18 + r0; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x5d764: - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + case 0x53164: + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r3 = r0 - r2; - r4 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r3 = r16 << (r3&0x1f); + r4 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r3 = r16 << (r3 & 0x1f); r3 = r3 | r4; - r16 = r16 >>> (r2&0x1f); - writePages[(r18+20)>>>12][((r18+20)>>>2)&0x3ff] = r3; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - pc=0x5d684; + r16 = r16 >>> (r2 & 0x1f); + writePages[(r18 + 20) >>> 12][((r18 + 20) >>> 2) & 0x3ff] = r3; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; + /* Next insn is delay slot */ + pc = 0x53084; continue; - case 0x5d800: - pc=0x5d800; + case 0x53200: + pc = 0x53200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_5d800() throws ExecutionException { /* 0x5d800 - 0x5da00 */ + + private final void run_53200() throws ExecutionException { /* 0x53200 - 0x53400 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x5d800: + for (;;) { + switch (pc) { + case 0x53200: + r2 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; r29 = r29 + -56; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; - r18 = r5 + r0; - r5 = r29 + 20; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; - r19 = r4 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f20; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f21; - /* Next insn is delay slot */ - r31=0x5d834; - pc=0x5d400; - run_5d400(); return; - case 0x5d834: - r4 = r18 + r0; - r5 = r29 + 16; - f20 = f0; - f21 = f1; - r17 = f0; - r16 = f1; - /* Next insn is delay slot */ - r31=0x5d850; - pc=0x5d400; - run_5d400(); return; - case 0x5d850: - r5 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r6 = readPages[(r19+16)>>>12][((r19+16)>>>2)&0x3ff]; - r4 = r5 - r4; - r5 = readPages[(r18+16)>>>12][((r18+16)>>>2)&0x3ff]; - r3 = f0; - r5 = r6 - r5; - r5 = r5 << 5; - r4 = r4 + r5; - r2 = f1; - if(r4 <= 0) { - /* Next insn is delay slot */ - pc=0x5d8c0; - continue; - } - r4 = r4 << 20; - f20 = r17; - r16 = r4 + r16; - f21 = r16; - case 0x5d894: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - f20 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f21 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5d8c0: - r4 = r4 << 20; - f0 = r3; - r2 = r2 - r4; - f1 = r2; - /* Next insn is delay slot */ - pc=0x5d894; - continue; - case 0x5da00: - pc=0x5da00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5da00() throws ExecutionException { /* 0x5da00 - 0x5dc00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5da00: - r2 = r4 < 24 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5da34; - continue; - } - f0 = readPages[(r28+-30964)>>>12][((r28+-30964)>>>2)&0x3ff]; - f2 = readPages[(r28+-30956)>>>12][((r28+-30956)>>>2)&0x3ff]; - f1 = readPages[(r28+-30968)>>>12][((r28+-30968)>>>2)&0x3ff]; - f3 = readPages[(r28+-30960)>>>12][((r28+-30960)>>>2)&0x3ff]; - case 0x5da1c: - r4 = r4 + -1; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x5da1c; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5da34: - r2 = 7 << 16; - r2 = r2 + 2176; - r4 = r4 << 3; - r4 = r4 + r2; - f0 = readPages[(r4+4)>>>12][((r4+4)>>>2)&0x3ff]; - f1 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5dc00: - pc=0x5dc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5dc00() throws ExecutionException { /* 0x5dc00 - 0x5de00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5dc00: - r7 = readPages[(r6+16)>>>12][((r6+16)>>>2)&0x3ff]; - r5 = r5 + -1; - r2 = r6 + 20; - r8 = r5 >> 5; - r7 = r7 << 2; - r8 = r8 + 1; - r7 = r2 + r7; - r8 = r8 << 2; - r3 = ((r2 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; - r8 = r4 + r8; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5dc7c; - continue; - } - r3 = r4 + r0; - case 0x5dc34: - r2 = r2 + 4; - r5 = readPages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff]; - r3 = r3 + 4; - writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r5; - r5 = ((r2 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x5dc34; - continue; - } - r2 = r7 - r6; - r2 = r2 + -21; - r2 = r2 >>> 2; - r2 = r2 + 1; - r2 = r2 << 2; - r4 = r4 + r2; - r2 = ((r4 & 0xffffffffL) < (r8 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5dc88; - continue; - } - case 0x5dc74: - r4 = r4 + 4; - writePages[(r4+-4)>>>12][((r4+-4)>>>2)&0x3ff] = r0; - case 0x5dc7c: - r2 = ((r4 & 0xffffffffL) < (r8 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5dc74; - continue; - } - case 0x5dc88: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5de00: - pc=0x5de00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5de00() throws ExecutionException { /* 0x5de00 - 0x5e000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5de00: - r3 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - r2 = r5 >> 5; - r6 = r4 + 20; - r4 = r3 < r2 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5de74; - continue; - } - r3 = r3 << 2; - r3 = r6 + r3; - case 0x5de20: - r2 = ((r6 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5de68; - continue; - } - r2 = r3 + -4; - r3 = readPages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5de5c; - continue; - } - /* Next insn is delay slot */ - pc=0x5deac; - continue; - case 0x5de48: - r2 = r2 + -4; - r3 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5deac; - continue; - } - case 0x5de5c: - r3 = ((r6 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5de48; - continue; - } - case 0x5de68: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5de74: - r3 = r2 < r3 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x5deb8; - continue; - } - r2 = r2 << 2; - r5 = r5 & 31; - r3 = r6 + r2; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x5de20; - continue; - } - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r2 >>> (r5&0x1f); - r5 = r4 << (r5&0x1f); - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x5de20; - continue; - } - case 0x5deac: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5deb8: - r2 = r2 << 2; - r3 = r6 + r2; - /* Next insn is delay slot */ - pc=0x5de20; - continue; - case 0x5e000: - pc=0x5e000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5e000() throws ExecutionException { /* 0x5e000 - 0x5e200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5e000: - r2 = readPages[(r4+732)>>>12][((r4+732)>>>2)&0x3ff]; - r29 = r29 + -24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - r16 = r4 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5e034; - continue; - } - case 0x5e01c: - r2 = r0 + r0; - case 0x5e020: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5e034: - r5 = r0 + 128; - /* Next insn is delay slot */ - r31=0x5e040; - pc=0x3ec00; - run_3ec00(); return; - case 0x5e040: - writePages[(r16+732)>>>12][((r16+732)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5e080; - continue; - } - r3 = r0 + r0; - r4 = r0 + 128; - /* Next insn is delay slot */ - pc=0x5e064; - continue; - case 0x5e05c: - r2 = readPages[(r16+732)>>>12][((r16+732)>>>2)&0x3ff]; - case 0x5e064: - r2 = r2 + r3; - r3 = r3 + 4; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - if(r3 != r4) { - /* Next insn is delay slot */ - pc=0x5e05c; - continue; - } - /* Next insn is delay slot */ - pc=0x5e01c; - continue; - case 0x5e080: - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x5e020; - continue; - case 0x5e200: - pc=0x5e200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5e200() throws ExecutionException { /* 0x5e200 - 0x5e400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5e200: - r29 = r29 + -32; - r2 = (r5&0xffffffffL) < (32&0xffffffffL) ? 1 : 0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r16 = r4 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5e250; - continue; - } - r2 = readPages[(r4+732)>>>12][((r4+732)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5e270; - continue; - } - case 0x5e22c: - r5 = r5 << 2; - r5 = r2 + r5; - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r6; - case 0x5e23c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5e250: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r0 + 22; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5e270: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x5e280; - pc=0x5e000; - run_5e000(); return; - case 0x5e280: - r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r6 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5e29c; - continue; - } - r2 = readPages[(r16+732)>>>12][((r16+732)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x5e22c; - continue; - case 0x5e29c: - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x5e23c; - continue; - case 0x5e400: - pc=0x5e400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5e400() throws ExecutionException { /* 0x5e400 - 0x5e600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5e400: - r29 = r29 + -32; - r2 = (r5&0xffffffffL) < (32&0xffffffffL) ? 1 : 0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r17 = r4 + r0; - r16 = r5 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5e4f0; - continue; - } - r2 = readPages[(r4+732)>>>12][((r4+732)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5e4c0; - continue; - } - r3 = r5 << 2; - r3 = r2 + r3; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5e4c0; - continue; - } - r4 = r0 + 1; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x5e4b4; - continue; - } - r4 = r0 + -1; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x5e490; - continue; - } - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r0; - r4 = r5 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x5e474; - return; - case 0x5e474: - r2 = r0 + r0; - case 0x5e478: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5e490: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r0 + 22; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r2; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r2 = r0 + 1; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5e4b4: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5e478; - continue; - case 0x5e4c0: - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x5e4cc; - pc=0x48a20; - run_48a00(); return; - case 0x5e4cc: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r4 = r17 + r0; - r6 = r16 + r0; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r5 = r2 + r0; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x489e0; - run_48800(); return; - case 0x5e4f0: - r2 = r0 + 22; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x5e478; - continue; - case 0x5e600: - pc=0x5e600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5e600() throws ExecutionException { /* 0x5e600 - 0x5e800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5e600: - r2 = (r5&0xffffffffL) < (32&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5e6e0; - continue; - } - r2 = readPages[(r4+732)>>>12][((r4+732)>>>2)&0x3ff]; - r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r16 = r4 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5e6bc; - continue; - } - case 0x5e628: - r3 = r5 << 2; - r3 = r2 + r3; - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5e6b0; - continue; - } - r4 = r0 + -1; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x5e698; - continue; - } - r4 = r0 + 1; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x5e680; - continue; - } - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r0; - r4 = r5 + r0; - /* Next insn is delay slot */ - pc=r2; - r31=0x5e668; - return; - case 0x5e668: - r2 = r0 + r0; - case 0x5e66c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5e680: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r2 = r0 + 3; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5e698: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r2 = r0 + 2; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5e6b0: - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=0x5e66c; - continue; - case 0x5e6bc: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - r31=0x5e6c8; - pc=0x5e000; - run_5e000(); return; - case 0x5e6c8: - r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5e6ec; - continue; - } - r2 = readPages[(r16+732)>>>12][((r16+732)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x5e628; - continue; - case 0x5e6e0: - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5e6ec: - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x5e66c; - continue; - case 0x5e800: - pc=0x5e800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5e800() throws ExecutionException { /* 0x5e800 - 0x5ea00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5e800: - r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x5e400; - run_5e400(); return; - case 0x5ea00: - pc=0x5ea00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5ea00() throws ExecutionException { /* 0x5ea00 - 0x5ec00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5ea00: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x5e200; - run_5e200(); return; - case 0x5ec00: - pc=0x5ec00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5ec00() throws ExecutionException { /* 0x5ec00 - 0x5ee00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5ec00: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x5e000; - run_5e000(); return; - case 0x5ee00: - pc=0x5ee00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5ee00() throws ExecutionException { /* 0x5ee00 - 0x5f000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5ee00: - r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x5e600; - run_5e600(); return; - case 0x5f000: - pc=0x5f000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5f000() throws ExecutionException { /* 0x5f000 - 0x5f200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5f000: - r29 = r29 + -136; - r3 = r0 + 516; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r16; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r6; - r16 = r5 + r0; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r7; - addr=r29+28; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - r31=0x5f030; - pc=0x10268; - run_10200(); return; - case 0x5f030: - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r2 = 4 << 16; - r2 = r2 + 9216; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r2; - r7 = r29 + 144; - r2 = r0 + -1; - r5 = r29 + 16; - r6 = r16 + r0; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r0; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r0; - addr=r29+30; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x5f070; - pc=0x61400; - run_61400(); return; - case 0x5f070: - r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r16 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5f200: - pc=0x5f200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5f200() throws ExecutionException { /* 0x5f200 - 0x5f400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5f200: - r29 = r29 + -144; - r2 = r0 + 516; - writePages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff] = r16; - r16 = r4 + r0; - r4 = r5 + r0; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r31; - writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r7; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r5; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r6; - addr=r29+28; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x5f234; - pc=0x10268; - run_10200(); return; - case 0x5f234: - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r2 = 4 << 16; - r2 = r2 + 9216; - r6 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r2; - r7 = r29 + 156; - r2 = r0 + -1; - r4 = r16 + r0; - r5 = r29 + 16; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r0; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r0; - addr=r29+30; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x5f274; - pc=0x61400; - run_61400(); return; - case 0x5f274: - r31 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; - r16 = readPages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff]; - r29 = r29 + 144; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5f400: - pc=0x5f400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5f400() throws ExecutionException { /* 0x5f400 - 0x5f600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5f400: - r2 = r4 + r0; - r3 = r4 + r0; - /* Next insn is delay slot */ - pc=0x5f434; - continue; - case 0x5f410: - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x5f5cc; - continue; - } - r5 = r5 + 1; - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r7 = tmp; - r3 = r3 + 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r7&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r6 = r6 + -1; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x5f5d4; - continue; - } - case 0x5f434: - r7 = r5 & 3; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x5f410; - continue; - } - r4 = (r6&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; - r12 = r6 + r0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x5f5f8; - continue; - } - r6 = r6 & 3; - r12 = r12 - r6; - /* Next insn is delay slot */ - pc=0x5f494; - continue; - case 0x5f460: - addr=r3+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r9&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x5f4c0; - continue; - } - addr=r3+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r10&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r10 == r0) { - /* Next insn is delay slot */ - pc=0x5f4c8; - continue; - } - addr=r3+3; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r11&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r11 == r0) { - /* Next insn is delay slot */ - pc=0x5f4d0; - continue; - } - r3 = r3 + 4; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x5f5f8; - continue; - } - r12 = r7 + r0; - case 0x5f494: - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r8 = tmp; - addr=r5+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r9 = tmp; - addr=r5+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r10 = tmp; - addr=r5+3; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r11 = tmp; - r7 = r12 + -4; - r5 = r5 + 4; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r8&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x5f460; - continue; - } - r7 = r12 + -3; - r3 = r3 + -1; - case 0x5f4c0: - r7 = r7 + 1; - r3 = r3 + -1; - case 0x5f4c8: - r7 = r7 + 1; - r3 = r3 + -1; - case 0x5f4d0: - r6 = r7 + r6; - r3 = r3 + 4; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x5f5c4; - continue; - } - r4 = r3 & 3; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x5f500; - continue; - } - /* Next insn is delay slot */ - pc=0x5f51c; - continue; - case 0x5f4f4: - r5 = r3 & 3; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x5f51c; - continue; - } - case 0x5f500: - r3 = r3 + 1; - r6 = r6 + -1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x5f4f4; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5f51c: - r4 = (r6&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x5f668; - run_5f600(); return; - } - r5 = r3 + r0; - r7 = r6 + r0; - case 0x5f530: - r7 = r7 + -16; - r5 = r5 + 16; - r8 = (r7&0xffffffffL) < (16&0xffffffffL) ? 1 : 0; - writePages[(r5+-16)>>>12][((r5+-16)>>>2)&0x3ff] = r0; - writePages[(r5+-12)>>>12][((r5+-12)>>>2)&0x3ff] = r0; - writePages[(r5+-8)>>>12][((r5+-8)>>>2)&0x3ff] = r0; - writePages[(r5+-4)>>>12][((r5+-4)>>>2)&0x3ff] = r0; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x5f530; - continue; - } - r5 = r6 + -16; - r5 = r5 >>> 4; - r5 = r5 + 1; - r5 = r5 << 4; - r4 = r6 & 15; - r3 = r3 + r5; - case 0x5f56c: - r5 = (r4&0xffffffffL) < (8&0xffffffffL) ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x5f588; - continue; - } - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r0; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r0; - r4 = r4 + -8; - r3 = r3 + 8; - case 0x5f588: - r5 = (r4&0xffffffffL) < (4&0xffffffffL) ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x5f5a0; - continue; - } - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r0; - r4 = r4 + -4; - r3 = r3 + 4; - case 0x5f5a0: - r5 = (r4&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x5f5b8; - continue; - } - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r0&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r4 = r4 + -2; - r3 = r3 + 2; - case 0x5f5b8: - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5f5c4; - continue; - } - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x5f5c4: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5f5cc: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5f5d4: - r6 = r3 + r6; - if(r3 == r6) { - /* Next insn is delay slot */ - pc=0x5f5c4; - continue; - } - case 0x5f5e0: - r3 = r3 + 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r3 != r6) { - /* Next insn is delay slot */ - pc=0x5f5e0; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5f5f8: - r6 = r3 + r6; - if(r3 == r6) { - /* Next insn is delay slot */ - pc=0x5f5c4; - continue; - } - case 0x5f600: - pc=0x5f600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5f600() throws ExecutionException { /* 0x5f600 - 0x5f800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5f600: - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r8 = r5 + 1; - r7 = r3 + 1; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = r8 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5f640; - continue; - } - case 0x5f620: - if(r7 == r6) { - /* Next insn is delay slot */ - pc=0x5f660; - continue; - } - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r7 = r7 + 1; - addr=r7+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = r3 + 1; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x5f620; - continue; - } - case 0x5f640: - if(r6 == r7) { - /* Next insn is delay slot */ - pc=0x5f5c4; - run_5f400(); return; - } - case 0x5f648: - r7 = r7 + 1; - addr=r7+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r7 != r6) { - /* Next insn is delay slot */ - pc=0x5f648; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5f660: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5f668: - r4 = r6 + r0; - /* Next insn is delay slot */ - pc=0x5f56c; - run_5f400(); return; - case 0x5f800: - pc=0x5f800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5f800() throws ExecutionException { /* 0x5f800 - 0x5fa00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5f800: - r12 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - r2 = r5 + r0; - /* Next insn is delay slot */ - pc=0x5f814; - continue; - case 0x5f810: - r2 = r3 + r0; - case 0x5f814: - r3 = r2 + 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r8 = tmp; - r9 = r12 + r8; - addr=r9+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r9 = tmp; - r9 = r9 & 8; - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x5f810; - continue; - } - r9 = r0 + 45; - if(r8 == r9) { - /* Next insn is delay slot */ - pc=0x5f9cc; - continue; - } - r9 = r0 + 43; - if(r8 == r9) { - /* Next insn is delay slot */ - pc=0x5f9e0; - continue; - } - r25 = r0 + r0; - case 0x5f854: - r2 = r0 + -17; - r2 = r7 & r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5f97c; - continue; - } - r24 = r0 + -1; - if(r7 != r0) { - /* Next insn is delay slot */ - if(r7!=0) { - hi = (int)((r24 & 0xffffffffL) % (r7 & 0xffffffffL)); lo = (int)((r24 & 0xffffffffL) / (r7 & 0xffffffffL)); - } - pc=0x5f874; - continue; - } - if(r7!=0) { - hi = (int)((r24 & 0xffffffffL) % (r7 & 0xffffffffL)); lo = (int)((r24 & 0xffffffffL) / (r7 & 0xffffffffL)); - } - throw new ExecutionException("Break"); - case 0x5f874: - r15 = r7 + r0; - r24 = hi; - r13 = lo; - case 0x5f880: - r10 = r0 + r0; - r2 = r0 + r0; - r14 = r0 + 1; - /* Next insn is delay slot */ - pc=0x5f8dc; - continue; - case 0x5f894: - r8 = r8 + -48; - r9 = r8 < r7 ? 1 : 0; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x5f91c; - continue; - } - case 0x5f8a4: - if(r10 < 0) { - /* Next insn is delay slot */ - pc=0x5f958; - continue; - } - r9 = ((r13 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x5f958; - continue; - } - if(r2 == r13) { - /* Next insn is delay slot */ - pc=0x5f94c; - continue; - } - case 0x5f8c0: - { long hilo = (r2) * r15; hi = (int) (hilo >>> 32); lo = (int) hilo; } - r10 = r0 + 1; - r2 = lo; - r2 = r8 + r2; - case 0x5f8d0: - r3 = r3 + 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r8 = tmp; - case 0x5f8dc: - r9 = r12 + r8; - addr=r9+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r9 = tmp; - r11 = r9 & 4; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x5f894; - continue; - } - r9 = r9 & 3; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x5f91c; - continue; - } - if(r9 == r14) { - /* Next insn is delay slot */ - pc=0x5f964; - continue; - } - r9 = r0 + 87; - r8 = r8 - r9; - case 0x5f910: - r9 = r8 < r7 ? 1 : 0; - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x5f8a4; - continue; - } - case 0x5f91c: - if(r10 < 0) { - /* Next insn is delay slot */ - pc=0x5f9b8; - continue; - } - if(r25 != r0) { - /* Next insn is delay slot */ - pc=0x5f9ac; - continue; - } - case 0x5f92c: - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x5f974; - continue; - } - if(r10 == r0) { - /* Next insn is delay slot */ - pc=0x5f940; - continue; - } - r5 = r3 + -1; - case 0x5f940: - writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5f94c: - r9 = r24 < r8 ? 1 : 0; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x5f8c0; - continue; - } - case 0x5f958: - r10 = r0 + -1; - /* Next insn is delay slot */ - pc=0x5f8d0; - continue; - case 0x5f964: - r9 = r0 + 55; - r8 = r8 - r9; - /* Next insn is delay slot */ - pc=0x5f910; - continue; - case 0x5f974: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x5f97c: - r2 = r0 + 48; - if(r8 == r2) { - /* Next insn is delay slot */ - pc=0x5f9f4; - continue; - } - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x5fa50; - run_5fa00(); return; - } - r13 = 6553 << 16; - r24 = r0 + 5; - r13 = r13 | 39321; - r15 = r0 + 10; - r7 = r0 + 10; - /* Next insn is delay slot */ - pc=0x5f880; - continue; - case 0x5f9ac: - r2 = r0 - r2; - /* Next insn is delay slot */ - pc=0x5f92c; - continue; - case 0x5f9b8: - r2 = r0 + 34; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x5f92c; - continue; - case 0x5f9cc: - r3 = r2 + 2; - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r8 = tmp; - r25 = r0 + 1; - /* Next insn is delay slot */ - pc=0x5f854; - continue; - case 0x5f9e0: - r3 = r2 + 2; - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r8 = tmp; - r25 = r0 + r0; - /* Next insn is delay slot */ - pc=0x5f854; - continue; - case 0x5f9f4: - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r9 = tmp; - r2 = r0 + 88; - r9 = r9 & 223; - case 0x5fa00: - pc=0x5fa00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5fa00() throws ExecutionException { /* 0x5fa00 - 0x5fc00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5fa00: - if(r9 == r2) { - /* Next insn is delay slot */ - pc=0x5fa2c; - continue; - } - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x5fa50; - continue; - } - r13 = 8191 << 16; - r24 = r0 + 7; - r13 = r13 | 65535; - r15 = r0 + 8; - r7 = r0 + 8; - /* Next insn is delay slot */ - pc=0x5f880; - run_5f800(); return; - case 0x5fa2c: - r13 = 4095 << 16; - addr=r3+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r8 = tmp; - r24 = r0 + 15; - r3 = r3 + 2; - r13 = r13 | 65535; - r15 = r0 + 16; - r7 = r0 + 16; - /* Next insn is delay slot */ - pc=0x5f880; - run_5f800(); return; - case 0x5fa50: - r13 = r0 + -1; - if(r7 != r0) { - /* Next insn is delay slot */ - if(r7!=0) { - hi = (int)((r13 & 0xffffffffL) % (r7 & 0xffffffffL)); lo = (int)((r13 & 0xffffffffL) / (r7 & 0xffffffffL)); - } - pc=0x5fa60; - continue; - } - if(r7!=0) { - hi = (int)((r13 & 0xffffffffL) % (r7 & 0xffffffffL)); lo = (int)((r13 & 0xffffffffL) / (r7 & 0xffffffffL)); - } - throw new ExecutionException("Break"); - case 0x5fa60: - r15 = r7 + r0; - r24 = hi; - r13 = lo; - /* Next insn is delay slot */ - pc=0x5f880; - run_5f800(); return; - case 0x5fc00: - pc=0x5fc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5fc00() throws ExecutionException { /* 0x5fc00 - 0x5fe00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5fc00: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x5f800; - run_5f800(); return; - case 0x5fe00: - pc=0x5fe00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_5fe00() throws ExecutionException { /* 0x5fe00 - 0x60000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x5fe00: - r2 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; - r29 = r29 + -56; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r23; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r30; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r21; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r30; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r16; r23 = r6 + r0; - r18 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5fffc; + r18 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x533fc; continue; } r20 = r4 + r0; - r3 = readPages[(r5+8)>>>12][((r5+8)>>>2)&0x3ff]; - r4 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; + r3 = readPages[(r5 + 8) >>> 12][((r5 + 8) >>> 2) & 0x3ff]; + r4 = readPages[(r5 + 0) >>> 12][((r5 + 0) >>> 2) & 0x3ff]; r17 = r5 + r0; r30 = r0 + r0; r16 = r0 + r0; - case 0x5fe58: - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x5fec4; + case 0x53258: + if (r16 == r0) { + /* Next insn is delay slot */ + pc = 0x532c4; continue; } r2 = ((r16 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; r19 = r3 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5fed8; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x532d8; continue; } - addr=r17+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + addr = r17 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r3 = r2 & 1152; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x5fee8; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x532e8; continue; } r22 = r19 + r0; - case 0x5fe88: + case 0x53288: r5 = r30 + r0; r6 = r22 + r0; - /* Next insn is delay slot */ - r31=0x5fe98; - pc=0x5b600; - run_5b600(); return; - case 0x5fe98: - r3 = readPages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff]; - r4 = readPages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff]; - r2 = readPages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff]; + /* Next insn is delay slot */ + r31 = 0x53298; + pc = 0x51600; + run_51600(); + return; + case 0x53298: + r3 = readPages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff]; + r4 = readPages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff]; + r2 = readPages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff]; r3 = r3 - r19; r4 = r4 + r22; r2 = r2 - r16; - writePages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff] = r3; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r4; - writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5fffc; + writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r3; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r4; + writePages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff] = r2; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x533fc; continue; } - case 0x5fec4: - r30 = readPages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff]; - r16 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; + case 0x532c4: + r30 = readPages[(r18 + 0) >>> 12][((r18 + 0) >>> 2) & 0x3ff]; + r16 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; r18 = r18 + 8; - /* Next insn is delay slot */ - pc=0x5fe58; + /* Next insn is delay slot */ + pc = 0x53258; continue; - case 0x5fed8: + case 0x532d8: r19 = r16 + r0; r22 = r16 + r0; - /* Next insn is delay slot */ - pc=0x5fe88; + /* Next insn is delay slot */ + pc = 0x53288; continue; - case 0x5fee8: - r5 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; + case 0x532e8: + r5 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; r6 = r16 + 1; r21 = r4 - r5; - r4 = readPages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff]; + r4 = readPages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff]; r6 = r6 + r21; r22 = r4 << 1; r4 = r22 + r4; @@ -75327,16822 +68814,2985 @@ public final class AcmeCrossAssembler extends UnixRuntime { r22 = r22 + r4; r22 = r22 >> 1; r4 = ((r22 & 0xffffffffL) < (r6 & 0xffffffffL)) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x5ff98; + if (r4 == r0) { + /* Next insn is delay slot */ + pc = 0x53398; continue; } r2 = r2 & 1024; r22 = r6 + r0; r4 = r20 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5ffac; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x533ac; continue; } - case 0x5ff30: + case 0x53330: r5 = r6 + r0; - /* Next insn is delay slot */ - r31=0x5ff3c; - pc=0x3ec00; - run_3ec00(); return; - case 0x5ff3c: + /* Next insn is delay slot */ + r31 = 0x5333c; + pc = 0x44a00; + run_44a00(); + return; + case 0x5333c: r19 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x5ffd0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x533d0; continue; } - r5 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; + r5 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; r4 = r2 + r0; r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x5ff5c; - pc=0x48fdc; - run_48e00(); return; - case 0x5ff5c: - addr=r17+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + /* Next insn is delay slot */ + r31 = 0x5335c; + pc = 0x4d7e0; + run_4d600(); + return; + case 0x5335c: + addr = r17 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r3 = r0 + -1153; r2 = r2 & r3; r2 = r2 | 128; - addr=r17+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x5ff70: + addr = r17 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + case 0x53370: r4 = r19 + r21; - writePages[(r17+20)>>>12][((r17+20)>>>2)&0x3ff] = r22; + writePages[(r17 + 20) >>> 12][((r17 + 20) >>> 2) & 0x3ff] = r22; r22 = r22 - r21; - writePages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff] = r19; - writePages[(r17+8)>>>12][((r17+8)>>>2)&0x3ff] = r22; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r4; + writePages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff] = r19; + writePages[(r17 + 8) >>> 12][((r17 + 8) >>> 2) & 0x3ff] = r22; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r4; r19 = r16 + r0; r22 = r16 + r0; - /* Next insn is delay slot */ - pc=0x5fe88; + /* Next insn is delay slot */ + pc = 0x53288; continue; - case 0x5ff98: + case 0x53398: r2 = r2 & 1024; r6 = r22 + r0; r4 = r20 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5ff30; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x53330; continue; } - case 0x5ffac: - /* Next insn is delay slot */ - r31=0x5ffb4; - pc=0x40800; - run_40800(); return; - case 0x5ffb4: + case 0x533ac: + /* Next insn is delay slot */ + r31 = 0x533b4; + pc = 0x46400; + run_46400(); + return; + case 0x533b4: r19 = r2 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x5ff70; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x53370; continue; } - r5 = readPages[(r17+16)>>>12][((r17+16)>>>2)&0x3ff]; + r5 = readPages[(r17 + 16) >>> 12][((r17 + 16) >>> 2) & 0x3ff]; r4 = r20 + r0; - /* Next insn is delay slot */ - r31=0x5ffd0; - pc=0x3ca00; - run_3ca00(); return; - case 0x5ffd0: + /* Next insn is delay slot */ + r31 = 0x533d0; + pc = 0x42c00; + run_42c00(); + return; + case 0x533d0: r2 = r0 + 12; - writePages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff] = r2; - addr=r17+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + writePages[(r20 + 0) >>> 12][((r20 + 0) >>> 2) & 0x3ff] = r2; + addr = r17 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 | 64; - addr=r17+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r23+8)>>>12][((r23+8)>>>2)&0x3ff] = r0; - writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r0; + addr = r17 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + writePages[(r23 + 8) >>> 12][((r23 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff] = r0; r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x60000; - run_60000(); return; - case 0x5fffc: - writePages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff] = r0; - case 0x60000: - pc=0x60000; + /* Next insn is delay slot */ + pc = 0x53400; + run_53400(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x533fc: + writePages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff] = r0; + case 0x53400: + pc = 0x53400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_60000() throws ExecutionException { /* 0x60000 - 0x60200 */ + + private final void run_53400() throws ExecutionException { /* 0x53400 - 0x53600 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x60000: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r30 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r23 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x53400: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r30 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r22 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x60200: - pc=0x60200; + case 0x53600: + pc = 0x53600; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_60200() throws ExecutionException { /* 0x60200 - 0x60400 */ + + private final void run_53600() throws ExecutionException { /* 0x53600 - 0x53800 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x60200: - addr=r5+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r29 = r29 + -224; - r2 = r2 & 128; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = r17; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = r16; - writePages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff] = r31; - writePages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff] = r30; - writePages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff] = r23; - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = r22; - writePages[(r29+204)>>>12][((r29+204)>>>2)&0x3ff] = r21; - writePages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff] = r20; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = r19; - writePages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff] = r18; - writePages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff] = r4; - r16 = r5 + r0; - r17 = r6 + r0; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r7; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6025c; - continue; - } - r2 = readPages[(r5+16)>>>12][((r5+16)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x611e4; - run_61000(); return; - } - case 0x6025c: - r5 = r29 + 119; - r21 = r29 + 120; - r4 = r29 + 16; - r2 = 7 << 16; - r6 = r21 - r5; - r18 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r4; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r0; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r0; - writePages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff] = r0; - writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r0; - r3 = r4 + r0; - r22 = r2 + 2748; - writePages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff] = r5; - writePages[(r29+172)>>>12][((r29+172)>>>2)&0x3ff] = r6; - case 0x60298: - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x60c98; - run_60c00(); return; - } - case 0x602a8: - r4 = r0 + 37; - r19 = r17 + r0; - if(r2 != r4) { - /* Next insn is delay slot */ - pc=0x602c8; - continue; - } - /* Next insn is delay slot */ - pc=0x60328; - continue; - case 0x602c0: - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x602dc; - continue; - } - case 0x602c8: - r19 = r19 + 1; - addr=r19+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x602c0; - continue; - } - case 0x602dc: - r20 = r19 - r17; - if(r20 == r0) { - /* Next insn is delay slot */ - pc=0x60328; - continue; - } - r2 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r17; - r2 = r2 + r20; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r2; - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r20; - r2 = r2 + 1; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; - r2 = r2 < 8 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x60edc; - run_60e00(); return; - } - r3 = r3 + 8; - case 0x60318: - r2 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; - r2 = r2 + r20; - writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r2; - case 0x60328: - addr=r19+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61160; - run_61000(); return; - } - r2 = r19 + 1; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r6 = r0 + r0; - r23 = r0 + -1; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r0; - r19 = r0 + r0; - r7 = r0 + 42; - r8 = r0 + r0; - case 0x60358: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r17 = r2 + 1; - case 0x60360: - r2 = r4 + -32; - r5 = (r2&0xffffffffL) < (89&0xffffffffL) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x608dc; - run_60800(); return; - } - case 0x60370: - r5 = 7 << 16; - r2 = r2 << 2; - r5 = r5 + 2376; - r2 = r5 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x60390: - r19 = r19 | 16; - case 0x60394: - r2 = r17 + r0; - /* Next insn is delay slot */ - pc=0x60358; - continue; - case 0x603a0: - r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r8 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r2 = r4 + 4; - if(r8 >= 0) { - /* Next insn is delay slot */ - pc=0x6103c; - run_61000(); return; - } - r8 = r0 - r8; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r2; - case 0x603c0: - r19 = r19 | 4; - r2 = r17 + r0; - /* Next insn is delay slot */ - pc=0x60358; - continue; - case 0x603d0: - r6 = r0 + 43; - r2 = r17 + r0; - /* Next insn is delay slot */ - pc=0x60358; - continue; - case 0x603e0: - r2 = r19 & 16; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x610ac; - run_61000(); return; - } - r19 = r19 & 64; - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x6118c; - run_61000(); return; - } - r6 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - case 0x60400: - pc=0x60400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_60400() throws ExecutionException { /* 0x60400 - 0x60600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x60400: - r4 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; - r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - r6 = r6 + 4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r4&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x60298; - run_60200(); return; - case 0x6041c: - r2 = 7 << 16; - r2 = r2 + 248; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff] = r2; - case 0x60430: - r2 = r19 & 16; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60448; - continue; - } - r2 = r19 & 64; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x61090; - run_61000(); return; - } - case 0x60448: - r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r5 = r5 + 4; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; - case 0x6045c: - r5 = r19 & 1; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x609c8; - run_60800(); return; - } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x609c8; - run_60800(); return; - } - r5 = r0 + 48; - addr=r29+132; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r29+133; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r19 = r19 | 2; - r4 = r0 + 2; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; - r5 = r0 + r0; - case 0x60490: - if(r23 < 0) { - /* Next insn is delay slot */ - pc=0x604a0; - continue; - } - r6 = r0 + -129; - r19 = r19 & r6; - case 0x604a0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60d0c; - run_60c00(); return; - } - if(r23 != r0) { - /* Next insn is delay slot */ - pc=0x60d0c; - run_60c00(); return; - } - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x604c4; - continue; - } - r2 = r19 & 1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x61074; - run_61000(); return; - } - case 0x604c4: - r30 = r21 + r0; - case 0x604c8: - r6 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; - r2 = r6 < r23 ? 1 : 0; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r6; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x604e4; - continue; - } - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r23; - case 0x604e4: - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x6058c; - continue; - } - r2 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x6058c; - continue; - case 0x60504: - r19 = r19 | 64; - r2 = r17 + r0; - /* Next insn is delay slot */ - pc=0x60358; - run_60200(); return; - case 0x60514: - r2 = r19 & 16; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x60854; - run_60800(); return; - } - case 0x60528: - r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r4 = r4 + 4; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r4; - case 0x6053c: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x6087c; - run_60800(); return; - } - case 0x60544: - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; - r4 = r0 + 1; - /* Next insn is delay slot */ - pc=0x60490; - continue; - case 0x60558: - r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r6 = r0 + 1; - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r5 = r5 + 4; - addr=r29+80; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 + 1; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r6; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r2; - r30 = r29 + 80; - case 0x60588: - r23 = r0 + r0; - case 0x6058c: - r4 = r19 & 2; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r4; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x605ac; - continue; - } - r5 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r5 = r5 + 2; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r5; - case 0x605ac: - r6 = r19 & 132; - writePages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff] = r6; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x609d4; - run_60800(); return; - } - r2 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; - r4 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r20 = r2 - r4; - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x609d4; - run_60800(); return; - } - r2 = r20 < 17 ? 1 : 0; - r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x61248; - run_61200(); return; - } - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - writePages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff] = r22; - r9 = r0 + 16; - /* Next insn is delay slot */ - pc=0x6060c; - run_60600(); return; - case 0x605f8: - r20 = r20 + -16; - r4 = r20 < 17 ? 1 : 0; - case 0x60600: - pc=0x60600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_60600() throws ExecutionException { /* 0x60600 - 0x60800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x60600: - r3 = r3 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x60670; - continue; - } - case 0x6060c: - r2 = r2 + 1; - r5 = r5 + 16; - r4 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r22; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r9; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x605f8; - run_60400(); return; - } - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r9; - /* Next insn is delay slot */ - r31=0x60648; - pc=0x5fe00; - run_5fe00(); return; - case 0x60648: - r9 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - } - r20 = r20 + -16; - r4 = r20 < 17 ? 1 : 0; - r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r3 = r29 + 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x6060c; - continue; - } - case 0x60670: - r2 = r2 + 1; - r6 = readPages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff]; - r5 = r20 + r5; - r4 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r6; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r20; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x60fe0; - run_60e00(); return; - } - r3 = r3 + 8; - /* Next insn is delay slot */ - pc=0x609dc; - run_60800(); return; - case 0x606a4: - r19 = r19 | 16; - r2 = r19 & 16; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x607a0; - continue; - } - case 0x606b8: - r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r4 = r4 + 4; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r4; - r4 = r0 + 1; - case 0x606d0: - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; - r5 = r0 + r0; - /* Next insn is delay slot */ - pc=0x60490; - run_60400(); return; - case 0x606e4: - r2 = 7 << 16; - r2 = r2 + 228; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x60430; - run_60400(); return; - case 0x60700: - r19 = r19 | 16; - r2 = r19 & 16; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x609a0; - run_60800(); return; - } - case 0x60714: - r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r4 = r4 + 4; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r4; - r4 = r0 + r0; - /* Next insn is delay slot */ - pc=0x606d0; - continue; - case 0x60734: - r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r4 = r0 + 48; - addr=r29+132; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r4 = r0 + 120; - addr=r29+133; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r4 = 7 << 16; - r4 = r4 + 248; - r5 = r5 + 4; - writePages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff] = r4; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; - r19 = r19 | 2; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; - r4 = r0 + 2; - /* Next insn is delay slot */ - pc=0x606d0; - continue; - case 0x60778: - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x60394; - run_60200(); return; - } - r6 = r0 + 32; - r2 = r17 + r0; - /* Next insn is delay slot */ - pc=0x60358; - run_60200(); return; - case 0x60790: - r2 = r19 & 16; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x606b8; - continue; - } - case 0x607a0: - r2 = r19 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x610e8; - run_61000(); return; - } - r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r4 = r0 + 1; - addr=r5+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r5 = r5 + 4; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x606d0; - continue; - case 0x607c8: - r6 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; - r30 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r20 = r6 + 4; - if(r30 == r0) { - /* Next insn is delay slot */ - pc=0x61210; - run_61200(); return; - } - r4 = r30 + r0; - if(r23 < 0) { - /* Next insn is delay slot */ - pc=0x611ac; - run_61000(); return; - } - r5 = r0 + r0; - r6 = r23 + r0; - writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x60804; - pc=0x5b400; - run_5b400(); return; - case 0x60800: - pc=0x60800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_60800() throws ExecutionException { /* 0x60800 - 0x60a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x60800: - case 0x60804: - r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61278; - run_61200(); return; - } - r2 = r2 - r30; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r2; - r2 = r23 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x60828; - continue; - } - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; - case 0x60828: - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r20; - r23 = r0 + r0; - /* Next insn is delay slot */ - pc=0x604c8; - run_60400(); return; - case 0x6083c: - r19 = r19 | 16; - r2 = r19 & 16; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60528; - run_60400(); return; - } - case 0x60854: - r2 = r19 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x610cc; - run_61000(); return; - } - r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - addr=r5+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r2 = tmp; - r5 = r5 + 4; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; - if(r2 >= 0) { - /* Next insn is delay slot */ - pc=0x60544; - run_60400(); return; - } - case 0x6087c: - r4 = r0 + 45; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 - r2; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; - r5 = r0 + 45; - r4 = r0 + 1; - /* Next insn is delay slot */ - pc=0x60490; - run_60400(); return; - case 0x6089c: - r8 = r0 + r0; - r2 = r4 + -48; - case 0x608a4: - r4 = r8 << 1; - r17 = r17 + 1; - r8 = r8 << 3; - r8 = r4 + r8; - addr=r17+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r8 = r8 + r2; - r2 = r4 + -48; - r5 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x608a4; - continue; - } - r2 = r4 + -32; - r5 = (r2&0xffffffffL) < (89&0xffffffffL) ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x60370; - run_60200(); return; - } - case 0x608dc: - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x61160; - run_61000(); return; - } - addr=r29+80; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 + 1; - r4 = r0 + 1; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r2; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r4; - r30 = r29 + 80; - /* Next insn is delay slot */ - pc=0x60588; - run_60400(); return; - case 0x60910: - r19 = r19 | 128; - r2 = r17 + r0; - /* Next insn is delay slot */ - pc=0x60358; - run_60200(); return; - case 0x60920: - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r5 = r17 + 1; - if(r4 == r7) { - /* Next insn is delay slot */ - pc=0x6129c; - run_61200(); return; - } - r2 = r4 + -48; - r9 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - r23 = r0 + r0; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x60974; - continue; - } - case 0x60944: - r4 = r23 << 1; - r5 = r5 + 1; - r23 = r23 << 3; - r23 = r4 + r23; - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r23 = r2 + r23; - r2 = r4 + -48; - r9 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x60944; - continue; - } - if(r23 < 0) { - /* Next insn is delay slot */ - pc=0x611d4; - run_61000(); return; - } - case 0x60974: - r17 = r5 + r0; - /* Next insn is delay slot */ - pc=0x60360; - run_60200(); return; - case 0x60980: - r19 = r19 | 1; - r2 = r17 + r0; - /* Next insn is delay slot */ - pc=0x60358; - run_60200(); return; - case 0x60990: - r2 = r19 & 16; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r8; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60714; - run_60600(); return; - } - case 0x609a0: - r2 = r19 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61104; - run_61000(); return; - } - r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r4 = r0 + r0; - addr=r5+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r5 = r5 + 4; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x606d0; - run_60600(); return; - case 0x609c8: - r4 = r0 + 2; - /* Next insn is delay slot */ - pc=0x606d0; - run_60600(); return; - case 0x609d4: - r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - case 0x609dc: - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x60a1c; - run_60a00(); return; - } - r4 = r29 + 134; - r2 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - r4 = r0 + 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - case 0x60a00: - pc=0x60a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_60a00() throws ExecutionException { /* 0x60a00 - 0x60c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x60a00: - r5 = r5 + 1; - r4 = r2 < 8 ? 1 : 0; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x60f80; - run_60e00(); return; - } - r3 = r3 + 8; - case 0x60a1c: - r4 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x60a5c; - continue; - } - r4 = r29 + 132; - r2 = r2 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - r4 = r0 + 2; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - r5 = r5 + 2; - r4 = r2 < 8 ? 1 : 0; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x60fb0; - run_60e00(); return; - } - r3 = r3 + 8; - case 0x60a5c: - r6 = readPages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff]; - r4 = r0 + 128; - if(r6 == r4) { - /* Next insn is delay slot */ - pc=0x60dac; - run_60c00(); return; - } - case 0x60a6c: - r4 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; - r23 = r23 - r4; - if(r23 <= 0) { - /* Next insn is delay slot */ - pc=0x60b40; - continue; - } - r4 = r23 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x61150; - run_61000(); return; - } - r4 = 7 << 16; - r20 = r4 + 2732; - r9 = r0 + 16; - /* Next insn is delay slot */ - pc=0x60ab4; - continue; - case 0x60aa0: - r23 = r23 + -16; - r4 = r23 < 17 ? 1 : 0; - r3 = r3 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x60b18; - continue; - } - case 0x60ab4: - r2 = r2 + 1; - r5 = r5 + 16; - r4 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r20; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r9; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x60aa0; - continue; - } - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r9; - /* Next insn is delay slot */ - r31=0x60af0; - pc=0x5fe00; - run_5fe00(); return; - case 0x60af0: - r9 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - } - r23 = r23 + -16; - r4 = r23 < 17 ? 1 : 0; - r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r3 = r29 + 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x60ab4; - continue; - } - case 0x60b18: - r2 = r2 + 1; - r5 = r5 + r23; - r4 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r20; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r23; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x60f04; - run_60e00(); return; - } - r3 = r3 + 8; - case 0x60b40: - r6 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; - r2 = r2 + 1; - r5 = r6 + r5; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; - r2 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r30; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r6; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x60ea4; - run_60e00(); return; - } - r3 = r3 + 8; - case 0x60b6c: - r19 = r19 & 4; - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x60c50; - run_60c00(); return; - } - r2 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; - r4 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r19 = r2 - r4; - if(r19 <= 0) { - /* Next insn is delay slot */ - pc=0x60c50; - run_60c00(); return; - } - r2 = r19 < 17 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x61258; - run_61200(); return; - } - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - writePages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff] = r22; - r23 = r0 + 16; - r6 = r5 + r0; - /* Next insn is delay slot */ - pc=0x60bc8; - continue; - case 0x60bb4: - r19 = r19 + -16; - r4 = r19 < 17 ? 1 : 0; - r3 = r3 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x60c24; - run_60c00(); return; - } - case 0x60bc8: - r2 = r2 + 1; - r6 = r6 + 16; - r4 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r22; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r23; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r6; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x60bb4; - continue; - } - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x60c00; - pc=0x5fe00; - run_5fe00(); return; - case 0x60c00: - pc=0x60c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_60c00() throws ExecutionException { /* 0x60c00 - 0x60e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x60c00: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - continue; - } - r19 = r19 + -16; - r4 = r19 < 17 ? 1 : 0; - r6 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r3 = r29 + 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x60bc8; - run_60a00(); return; - } - case 0x60c24: - r5 = r6 + r0; - case 0x60c28: - r2 = r2 + 1; - r6 = readPages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff]; - r5 = r5 + r19; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; - r2 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r6; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r19; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6104c; - run_61000(); return; - } - case 0x60c50: - r2 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r4 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; - r3 = r2 < r4 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x60c6c; - continue; - } + for (;;) { + switch (pc) { + case 0x53600: r2 = r4 + r0; - case 0x60c6c: - r3 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; - r3 = r3 + r2; - writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r3; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x60ca4; - continue; - } - case 0x60c84: - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r0; - r3 = r29 + 16; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x602a8; - run_60200(); return; - } - case 0x60c98: - r19 = r17 + r0; - /* Next insn is delay slot */ - pc=0x60328; - run_60200(); return; - case 0x60ca4: - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x60cb8; - pc=0x5fe00; - run_5fe00(); return; - case 0x60cb8: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x60c84; - continue; - } - case 0x60cc0: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r2 = r2 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x60ed0; - run_60e00(); return; - } - r2 = r0 + -1; - case 0x60cd8: - r31 = readPages[(r29+220)>>>12][((r29+220)>>>2)&0x3ff]; - r30 = readPages[(r29+216)>>>12][((r29+216)>>>2)&0x3ff]; - r23 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; - r22 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; - r21 = readPages[(r29+204)>>>12][((r29+204)>>>2)&0x3ff]; - r20 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; - r19 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; - r18 = readPages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff]; - r17 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; - r16 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; - r29 = r29 + 224; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x60d0c: - r6 = r0 + 1; - if(r4 == r6) { - /* Next insn is delay slot */ - pc=0x60f34; - run_60e00(); return; - } - r6 = r0 + 2; - r30 = r21 + r0; - if(r4 != r6) { - /* Next insn is delay slot */ - pc=0x60d5c; - continue; - } - r6 = readPages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff]; - case 0x60d2c: - r4 = r2 & 15; - r4 = r6 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r30 = r30 + -1; - r2 = r2 >>> 4; - addr=r30+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60d2c; - continue; - } - r4 = r21 - r30; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x604c8; - run_60400(); return; - case 0x60d5c: - r4 = r2 & 7; - r30 = r30 + -1; - r4 = r4 + 48; - r2 = r2 >>> 3; - addr=r30+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60d5c; - continue; - } - r2 = r19 & 1; - r6 = r30 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6102c; - run_61000(); return; - } - r2 = r0 + 48; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x60f70; - run_60e00(); return; - } - r30 = r30 + -1; - r4 = r21 - r30; - addr=r6+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x604c8; - run_60400(); return; - case 0x60dac: - r4 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; - r6 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r9 = r4 - r6; - if(r9 <= 0) { - /* Next insn is delay slot */ - pc=0x60a6c; - run_60a00(); return; - } - r4 = r9 < 17 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x61268; - run_61200(); return; - } - r6 = 7 << 16; - r20 = r6 + 2732; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r17; - r10 = r0 + 16; - r17 = r20 + r0; - r20 = r9 + r0; - /* Next insn is delay slot */ - pc=0x60e04; - run_60e00(); return; - case 0x60df0: - r20 = r20 + -16; - r4 = r20 < 17 ? 1 : 0; - r3 = r3 + 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x60e68; - run_60e00(); return; - } - case 0x60e00: - pc=0x60e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_60e00() throws ExecutionException { /* 0x60e00 - 0x61000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x60e00: - case 0x60e04: - r2 = r2 + 1; - r5 = r5 + 16; - r4 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r17; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r10; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x60df0; - run_60c00(); return; - } - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r10; - /* Next insn is delay slot */ - r31=0x60e40; - pc=0x5fe00; - run_5fe00(); return; - case 0x60e40: - r10 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - } - r20 = r20 + -16; - r4 = r20 < 17 ? 1 : 0; - r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r3 = r29 + 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x60e04; - continue; - } - case 0x60e68: - r9 = r20 + r0; - r20 = r17 + r0; - r17 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - case 0x60e74: - r2 = r2 + 1; - r5 = r5 + r9; - r4 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r20; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r9; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r5; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r2; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x61120; - run_61000(); return; - } - r3 = r3 + 8; - /* Next insn is delay slot */ - pc=0x60a6c; - run_60a00(); return; - case 0x60ea4: - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x60eb8; - pc=0x5fe00; - run_5fe00(); return; - case 0x60eb8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - } - r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r3 = r29 + 16; - /* Next insn is delay slot */ - pc=0x60b6c; - run_60a00(); return; - case 0x60ed0: - r2 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x60cd8; - run_60c00(); return; - case 0x60edc: - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x60ef0; - pc=0x5fe00; - run_5fe00(); return; - case 0x60ef0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - } - r3 = r29 + 16; - /* Next insn is delay slot */ - pc=0x60318; - run_60200(); return; - case 0x60f04: - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x60f18; - pc=0x5fe00; - run_5fe00(); return; - case 0x60f18: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - } - r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r3 = r29 + 16; - /* Next insn is delay slot */ - pc=0x60b40; - run_60a00(); return; - case 0x60f34: - r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x61010; - run_61000(); return; - } - r30 = r21 + r0; - r4 = r0 + 10; - case 0x60f48: - if(r4 != r0) { - /* Next insn is delay slot */ - if(r4!=0) { - hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); - } - pc=0x60f54; - continue; - } - if(r4!=0) { - hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); - } - throw new ExecutionException("Break"); - case 0x60f54: - r30 = r30 + -1; - r6 = hi; - r6 = r6 + 48; - addr=r30+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = lo; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60f48; - continue; - } - case 0x60f70: - r2 = r21 - r30; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x604c8; - run_60400(); return; - case 0x60f80: - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x60f94; - pc=0x5fe00; - run_5fe00(); return; - case 0x60f94: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - } - r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r3 = r29 + 16; - /* Next insn is delay slot */ - pc=0x60a1c; - run_60a00(); return; - case 0x60fb0: - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x60fc4; - pc=0x5fe00; - run_5fe00(); return; - case 0x60fc4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - } - r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r3 = r29 + 16; - /* Next insn is delay slot */ - pc=0x60a5c; - run_60a00(); return; - case 0x60fe0: - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x60ff4; - pc=0x5fe00; - run_5fe00(); return; - case 0x60ff4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - } - r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - case 0x61000: - pc=0x61000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_61000() throws ExecutionException { /* 0x61000 - 0x61200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x61000: - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r3 = r29 + 16; - /* Next insn is delay slot */ - pc=0x609dc; - run_60800(); return; - case 0x61010: - r6 = readPages[(r29+172)>>>12][((r29+172)>>>2)&0x3ff]; - r2 = r2 + 48; - addr=r29+119; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r6; - r30 = r29 + 119; - /* Next insn is delay slot */ - pc=0x604c8; - run_60400(); return; - case 0x6102c: - r6 = r21 - r30; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x604c8; - run_60400(); return; - case 0x6103c: - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r2; - r2 = r17 + r0; - /* Next insn is delay slot */ - pc=0x60358; - run_60200(); return; - case 0x6104c: - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x61060; - pc=0x5fe00; - run_5fe00(); return; - case 0x61060: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - } - r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x60c50; - run_60c00(); return; - case 0x61074: - r6 = readPages[(r29+172)>>>12][((r29+172)>>>2)&0x3ff]; - r2 = r0 + 48; - addr=r29+119; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r6; - r30 = r29 + 119; - /* Next insn is delay slot */ - pc=0x604c8; - run_60400(); return; - case 0x61090: - r6 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - addr=r6+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r6 = r6 + 4; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x6045c; - run_60400(); return; - case 0x610ac: - r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r5 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r4 = r4 + 4; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r5; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x60298; - run_60200(); return; - case 0x610cc: - r6 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - r6 = r6 + 4; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x6053c; - run_60400(); return; - case 0x610e8: - r6 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r4 = r0 + 1; - r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - r6 = r6 + 4; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x606d0; - run_60600(); return; - case 0x61104: - r6 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r4 = r0 + r0; - r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - r6 = r6 + 4; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - pc=0x606d0; - run_60600(); return; - case 0x61120: - r4 = r18 + r0; - r5 = r16 + r0; - r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x61134; - pc=0x5fe00; - run_5fe00(); return; - case 0x61134: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - } - r5 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r3 = r29 + 16; - /* Next insn is delay slot */ - pc=0x60a6c; - run_60a00(); return; - case 0x61150: - r6 = 7 << 16; - r20 = r6 + 2732; - /* Next insn is delay slot */ - pc=0x60b18; - run_60a00(); return; - case 0x61160: - r2 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - } - r4 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; - r5 = r16 + r0; - r6 = r29 + 120; - /* Next insn is delay slot */ - r31=0x61184; - pc=0x5fe00; - run_5fe00(); return; - case 0x61184: - /* Next insn is delay slot */ - pc=0x60cc0; - run_60c00(); return; - case 0x6118c: - r5 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r6 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r5 = r5 + 4; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r6; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x60298; - run_60200(); return; - case 0x611ac: - writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x611b8; - pc=0x10268; - run_10200(); return; - case 0x611b8: - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r2; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r20; - r23 = r0 + r0; - r3 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x604c8; - run_60400(); return; - case 0x611d4: - r23 = r0 + -1; - r17 = r5 + r0; - /* Next insn is delay slot */ - pc=0x60360; - run_60200(); return; - case 0x611e4: - r5 = r0 + 64; - /* Next insn is delay slot */ - r31=0x611f0; - pc=0x3ec00; - run_3ec00(); return; - case 0x611f0: - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x612c8; - run_61200(); return; - } - case 0x61200: - pc=0x61200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_61200() throws ExecutionException { /* 0x61200 - 0x61400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x61200: - r2 = r0 + 64; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x6025c; - run_60200(); return; - case 0x61210: - r2 = (r23&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x61220; - continue; - } - r23 = r0 + 6; - case 0x61220: - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; - r2 = r23 + r0; - if(r23 < 0) { - /* Next insn is delay slot */ - pc=0x61290; - continue; - } - case 0x61230: - r8 = 7 << 16; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r2; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r20; - r30 = r8 + 268; - /* Next insn is delay slot */ - pc=0x60588; - run_60400(); return; - case 0x61248: - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - writePages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff] = r22; - /* Next insn is delay slot */ - pc=0x60670; - run_60600(); return; - case 0x61258: - r2 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - writePages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff] = r22; - /* Next insn is delay slot */ - pc=0x60c28; - run_60c00(); return; - case 0x61268: - r4 = 7 << 16; - r20 = r4 + 2732; - /* Next insn is delay slot */ - pc=0x60e74; - run_60e00(); return; - case 0x61278: - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r23; - addr=r29+134; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r20; - r23 = r0 + r0; - /* Next insn is delay slot */ - pc=0x604c8; - run_60400(); return; - case 0x61290: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x61230; - continue; - case 0x6129c: - r4 = readPages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff]; - r17 = r5 + r0; - r23 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r2 = r4 + 4; - if(r23 >= 0) { - /* Next insn is delay slot */ - pc=0x6103c; - run_61000(); return; - } - writePages[(r29+236)>>>12][((r29+236)>>>2)&0x3ff] = r2; - r23 = r0 + -1; - r2 = r17 + r0; - /* Next insn is delay slot */ - pc=0x60358; - run_60200(); return; - case 0x612c8: - r3 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; - r2 = r0 + 12; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x60cd8; - run_60c00(); return; - case 0x61400: - pc=0x61400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_61400() throws ExecutionException { /* 0x61400 - 0x61600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x61400: - addr=r5+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r2 = tmp; - r29 = r29 + -752; - writePages[(r29+708)>>>12][((r29+708)>>>2)&0x3ff] = r17; - r17 = r4 + r0; - r4 = r2 & 8192; - writePages[(r29+736)>>>12][((r29+736)>>>2)&0x3ff] = r30; - writePages[(r29+720)>>>12][((r29+720)>>>2)&0x3ff] = r20; - writePages[(r29+704)>>>12][((r29+704)>>>2)&0x3ff] = r16; - writePages[(r29+740)>>>12][((r29+740)>>>2)&0x3ff] = r31; - writePages[(r29+732)>>>12][((r29+732)>>>2)&0x3ff] = r23; - writePages[(r29+728)>>>12][((r29+728)>>>2)&0x3ff] = r22; - writePages[(r29+724)>>>12][((r29+724)>>>2)&0x3ff] = r21; - writePages[(r29+716)>>>12][((r29+716)>>>2)&0x3ff] = r19; - writePages[(r29+712)>>>12][((r29+712)>>>2)&0x3ff] = r18; - writePages[(r29+748)>>>12][((r29+748)>>>2)&0x3ff] = f20; - writePages[(r29+744)>>>12][((r29+744)>>>2)&0x3ff] = f21; - r30 = r5 + r0; - r16 = r6 + r0; - r20 = r7 + r0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x6146c; - continue; - } - r2 = r2 | 8192; - r4 = readPages[(r5+100)>>>12][((r5+100)>>>2)&0x3ff]; - addr=r5+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 + -8193; - r2 = r4 & r2; - writePages[(r5+100)>>>12][((r5+100)>>>2)&0x3ff] = r2; - case 0x6146c: - writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = r0; - writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r0; - r21 = r0 + r0; - writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r0; - case 0x6147c: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r16 = r16 + 1; - writePages[(r29+640)>>>12][((r29+640)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61740; - run_61600(); return; - } - case 0x61490: - r4 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - r3 = r4 + r2; - addr=r3+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r3 & 8; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x6152c; - continue; - } - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x61508; - continue; - } - case 0x614c0: - r3 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r4 + r2; - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r2 & 8; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6147c; - continue; - } - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r3 = r3 + 1; - r2 = r2 + -1; - r21 = r21 + 1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r3; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x614c0; - continue; - } - case 0x61508: - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x61518; - pc=0x68e00; - run_68e00(); return; - case 0x61518: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6147c; - continue; - } - r4 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x614c0; - continue; - case 0x6152c: - r3 = r0 + 37; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x616ec; - run_61600(); return; - } - r18 = r0 + r0; - r23 = r0 + r0; - case 0x61540: - r16 = r16 + 1; - addr=r16+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r3 & 255; - r5 = (r2&0xffffffffL) < (121&0xffffffffL) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x6157c; - continue; - } - r5 = 7 << 16; - r2 = r2 << 2; - r5 = r5 + 2772; - r2 = r5 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x6157c: - r3 = r4 + r3; - addr=r3+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r2 = r0 + 1; - r3 = r3 & 3; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x61598; - continue; - } - case 0x61594: - r18 = r18 | 1; - case 0x61598: - r2 = 4 << 16; - r2 = r2 + 12800; - r3 = r0 + 10; - writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = r2; - writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r3; - r19 = r0 + 3; - case 0x615b0: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x61774; - run_61600(); return; - } - case 0x615c0: - r2 = r18 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61694; - run_61600(); return; - } - case 0x615cc: - r2 = r0 + 2; - if(r19 == r2) { - /* Next insn is delay slot */ - pc=0x618b8; - run_61800(); return; - } - r2 = r19 < 3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x617f0; - run_61600(); return; - } - r2 = r0 + 3; - if(r19 == r2) { - /* Next insn is delay slot */ - pc=0x619ec; - run_61800(); return; - } - r2 = r0 + 4; - if(r19 != r2) { - /* Next insn is delay slot */ - pc=0x61958; - run_61800(); return; - } - r2 = r23 + -1; - case 0x61600: - pc=0x61600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_61600() throws ExecutionException { /* 0x61600 - 0x61800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x61600: - r2 = (r2&0xffffffffL) < (349&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x62108; - run_62000(); return; - } - writePages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff] = r0; - case 0x61610: - r10 = r29 + 24; - r19 = r18 | 1920; - r3 = r0 + r0; - r18 = r0 + r0; - writePages[(r29+676)>>>12][((r29+676)>>>2)&0x3ff] = r0; - writePages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff] = r0; - writePages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff] = r0; - writePages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff] = r0; - r22 = r10 + r0; - r11 = r0 + -1921; - case 0x61638: - r6 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - addr=r6+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r5 = tmp; - r2 = r5 + -43; - r2 = r2 & 255; - r7 = (r2&0xffffffffL) < (79&0xffffffffL) ? 1 : 0; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x61ab4; - run_61a00(); return; - } - r4 = 7 << 16; - r2 = r2 << 2; - r4 = r4 + 3256; - r2 = r4 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x6167c: - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x6168c; - pc=0x68e00; - run_68e00(); return; - case 0x6168c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6178c; - continue; - } - case 0x61694: - r4 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x616ac; - continue; - case 0x616a4: - r2 = r2 + 1; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - case 0x616ac: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r4 + r3; - addr=r3+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r3 & 8; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x615cc; - run_61400(); return; - } - r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r21 = r21 + 1; - r3 = r3 + -1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; - if(r3 > 0) { - /* Next insn is delay slot */ - pc=0x616a4; - continue; - } - /* Next insn is delay slot */ - pc=0x6167c; - continue; - case 0x616ec: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x6275c; - run_62600(); return; - } - case 0x616fc: - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - addr=r16+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - if(r4 != r3) { - /* Next insn is delay slot */ - pc=0x61740; - continue; - } - r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r2 = r2 + 1; - r3 = r3 + -1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r21 = r21 + 1; - writePages[(r29+640)>>>12][((r29+640)>>>2)&0x3ff] = r2; - r16 = r16 + 1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x61490; - run_61400(); return; - } - case 0x61740: - r2 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x617b4; - continue; - case 0x6174c: - r18 = r18 | 1; - case 0x61750: - r2 = 6 << 16; - r2 = r2 + -2048; - writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = r2; - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r3 = r0 + 8; - writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r3; - r19 = r0 + 3; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x615c0; - run_61400(); return; - } - case 0x61774: - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x61784; - pc=0x68e00; - run_68e00(); return; - case 0x61784: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x615c0; - run_61400(); return; - } - case 0x6178c: - r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x617b0; - continue; - } - addr=r30+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r2 = r2 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61740; - continue; - } - case 0x617b0: - r2 = r0 + -1; - case 0x617b4: - f20 = readPages[(r29+748)>>>12][((r29+748)>>>2)&0x3ff]; - r31 = readPages[(r29+740)>>>12][((r29+740)>>>2)&0x3ff]; - r30 = readPages[(r29+736)>>>12][((r29+736)>>>2)&0x3ff]; - r23 = readPages[(r29+732)>>>12][((r29+732)>>>2)&0x3ff]; - r22 = readPages[(r29+728)>>>12][((r29+728)>>>2)&0x3ff]; - r21 = readPages[(r29+724)>>>12][((r29+724)>>>2)&0x3ff]; - r20 = readPages[(r29+720)>>>12][((r29+720)>>>2)&0x3ff]; - r19 = readPages[(r29+716)>>>12][((r29+716)>>>2)&0x3ff]; - r18 = readPages[(r29+712)>>>12][((r29+712)>>>2)&0x3ff]; - r17 = readPages[(r29+708)>>>12][((r29+708)>>>2)&0x3ff]; - r16 = readPages[(r29+704)>>>12][((r29+704)>>>2)&0x3ff]; - f21 = readPages[(r29+744)>>>12][((r29+744)>>>2)&0x3ff]; - r29 = r29 + 752; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x617f0: - r2 = r0 + 1; - if(r19 != r2) { - /* Next insn is delay slot */ - pc=0x61958; - run_61800(); return; - } - if(r23 != r0) { - /* Next insn is delay slot */ - pc=0x61808; - run_61800(); return; - } - case 0x61800: - pc=0x61800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_61800() throws ExecutionException { /* 0x61800 - 0x61a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x61800: - r23 = r0 + -1; - case 0x61808: - r18 = r18 & 16; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x62048; - run_62000(); return; - } - r10 = r29 + 24; - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r18 = r0 + r0; - r19 = r10 + r0; - case 0x61824: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r19 + r3; - addr=r3+352; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x618a4; - continue; - } - case 0x61840: - r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r2 = r2 + 1; - r3 = r3 + -1; - r18 = r18 + 1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - if(r23 == r18) { - /* Next insn is delay slot */ - pc=0x618ac; - continue; - } - if(r3 > 0) { - /* Next insn is delay slot */ - pc=0x61824; - continue; - } - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x61878; - pc=0x68e00; - run_68e00(); return; - case 0x61878: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x618ac; - continue; - } - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r19 + r3; - addr=r3+352; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x61840; - continue; - } - case 0x618a4: - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x61740; - run_61600(); return; - } - case 0x618ac: - r21 = r21 + r18; - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - case 0x618b8: - if(r23 != r0) { - /* Next insn is delay slot */ - pc=0x618c4; - continue; - } - r23 = r0 + -1; - case 0x618c4: - r2 = r18 & 1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6235c; - run_62200(); return; - } - r18 = r18 & 16; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x623fc; - run_62200(); return; - } - r4 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r18 = r0 + r0; - case 0x618e8: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r4 + r3; - addr=r3+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r3 & 8; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x618ac; - continue; - } - r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r2 = r2 + 1; - r3 = r3 + -1; - r18 = r18 + 1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - if(r23 == r18) { - /* Next insn is delay slot */ - pc=0x618ac; - continue; - } - if(r3 > 0) { - /* Next insn is delay slot */ - pc=0x618e8; - continue; - } - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x61940; - pc=0x68e00; - run_68e00(); return; - case 0x61940: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x618ac; - continue; - } - r4 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x618e8; - continue; - case 0x61958: - if(r23 != r0) { - /* Next insn is delay slot */ - pc=0x61964; - continue; - } - r23 = r0 + 1; - case 0x61964: - r2 = r18 & 1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6224c; - run_62200(); return; - } - r18 = r18 & 16; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x62718; - run_62600(); return; - } - r18 = r0 + r0; - /* Next insn is delay slot */ - pc=0x619b4; - continue; - case 0x61988: - r3 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r18 = r18 + r2; - r23 = r23 - r2; - r2 = r3 + r2; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x619ac; - pc=0x68e00; - run_68e00(); return; - case 0x619ac: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x62704; - run_62600(); return; - } - case 0x619b4: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r3 = r2 < r23 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x61988; - continue; - } - r2 = r2 - r23; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r18 = r18 + r23; - r8 = r2 + r23; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r8; - r21 = r21 + r18; - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - case 0x619ec: - r2 = r23 + -1; - r2 = (r2&0xffffffffL) < (349&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x62038; - run_62000(); return; - } - r6 = r0 + r0; - case 0x61a00: - pc=0x61a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_61a00() throws ExecutionException { /* 0x61a00 - 0x61c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x61a00: - r10 = r29 + 24; - r4 = 7 << 16; - r11 = r20 + r0; - r20 = r16 + r0; - r16 = readPages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff]; - r18 = r18 | 3456; - r8 = r0 + r0; - r19 = r10 + r0; - r7 = r0 + 512; - r22 = r4 + 3884; - case 0x61a28: - r5 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r2 = r3 + -43; - r2 = r2 & 255; - r9 = (r2&0xffffffffL) < (78&0xffffffffL) ? 1 : 0; - if(r9 == r0) { - /* Next insn is delay slot */ - pc=0x61ecc; - run_61e00(); return; - } - r4 = 7 << 16; - r2 = r2 << 2; - r4 = r4 + 3572; - r2 = r4 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x61a6c: - r2 = r3 + r18; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x61ab4; - continue; - } - r2 = r0 + -385; - r19 = r19 & r2; - case 0x61a80: - addr=r22+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r22 = r22 + 1; - case 0x61a88: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r23 = r23 + -1; - r2 = r2 + -1; - r21 = r21 + 1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x61cb4; - run_61c00(); return; - } - case 0x61aa4: - r6 = r6 + 1; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r6; - if(r23 != r0) { - /* Next insn is delay slot */ - pc=0x61638; - run_61600(); return; - } - case 0x61ab4: - r4 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x61cf4; - run_61c00(); return; - } - case 0x61ac4: - r2 = r3 + -1; - r2 = (r2&0xffffffffL) < (2&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x62960; - run_62800(); return; - } - r2 = r18 + -1; - r2 = (r2&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61b5c; - continue; - } - r2 = r18 < 3 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x628e0; - run_62800(); return; - } - r2 = r0 + 3; - r7 = r18 & 255; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x61b5c; - continue; - } - writePages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff] = r16; - r23 = r22 + r0; - r16 = r7 + r0; - r18 = r10 + r0; - case 0x61b10: - r23 = r23 + -1; - addr=r23+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r4 = r17 + r0; - r6 = r30 + r0; - /* Next insn is delay slot */ - r31=0x61b28; - pc=0x68c00; - run_68c00(); return; - case 0x61b28: - r3 = r16 + -1; - r2 = r23 + r21; - r16 = r3 & 255; - r4 = r2 - r22; - r2 = r16 << 24; - r2 = r2 >> 24; - r2 = r2 < 4 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61b10; - continue; - } - r16 = readPages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff]; - r10 = r18 + r0; - r21 = r4 + r0; - r22 = r23 + r0; - case 0x61b5c: - r2 = r19 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61be4; - continue; - } - r2 = r19 & 1024; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x62920; - run_62800(); return; - } - addr=r22+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r2 = r0 + 101; - r23 = r22 + -1; - r7 = r21 + -1; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x61bbc; - continue; - } - r2 = r0 + 69; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x61bbc; - continue; - } - r4 = r17 + r0; - r6 = r30 + r0; - writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; - /* Next insn is delay slot */ - r31=0x61bac; - pc=0x68c00; - run_68c00(); return; - case 0x61bac: - addr=r22+-2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; - r23 = r22 + -2; - r7 = r21 + -2; - case 0x61bbc: - r4 = r17 + r0; - r6 = r30 + r0; - writePages[(r29+684)>>>12][((r29+684)>>>2)&0x3ff] = r7; - writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; - /* Next insn is delay slot */ - r31=0x61bd4; - pc=0x68c00; - run_68c00(); return; - case 0x61bd4: - r7 = readPages[(r29+684)>>>12][((r29+684)>>>2)&0x3ff]; - r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; - r21 = r7 + r0; - r22 = r23 + r0; - case 0x61be4: - r2 = r19 & 16; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - } - r4 = r19 & 1536; - r2 = r0 + 1024; - addr=r22+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x6277c; - run_62600(); return; - } - case 0x61c00: - pc=0x61c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_61c00() throws ExecutionException { /* 0x61c00 - 0x61e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x61c00: - r3 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x62654; - run_62600(); return; - } - case 0x61c14: - r4 = r17 + r0; - r5 = r10 + r0; - r6 = r0 + r0; - /* Next insn is delay slot */ - r31=0x61c28; - pc=0x66c00; - run_66c00(); return; - case 0x61c28: - r2 = r19 & 1; - f20 = f0; - f21 = f1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x62544; - run_62400(); return; - } - case 0x61c38: - r2 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - r20 = r20 + 4; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = f20; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = f21; - case 0x61c48: - r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; - r3 = r3 + 1; - writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - case 0x61c60: - r2 = r19 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61a6c; - run_61a00(); return; - } - r2 = r0 + -129; - r5 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; - r19 = r19 & r2; - r2 = readPages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff]; - r5 = r5 + 1; - writePages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff] = r5; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61a88; - run_61a00(); return; - } - r2 = r2 + -1; - writePages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff] = r2; - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r23 = r23 + 1; - r2 = r2 + -1; - r23 = r23 + -1; - r21 = r21 + 1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x61aa4; - run_61a00(); return; - } - case 0x61cb4: - r4 = r17 + r0; - r5 = r30 + r0; - writePages[(r29+680)>>>12][((r29+680)>>>2)&0x3ff] = r3; - writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; - writePages[(r29+692)>>>12][((r29+692)>>>2)&0x3ff] = r11; - /* Next insn is delay slot */ - r31=0x61cd0; - pc=0x68e00; - run_68e00(); return; - case 0x61cd0: - r3 = readPages[(r29+680)>>>12][((r29+680)>>>2)&0x3ff]; - r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; - r11 = readPages[(r29+692)>>>12][((r29+692)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x61ab4; - run_61a00(); return; - } - if(r23 != r0) { - /* Next insn is delay slot */ - pc=0x61638; - run_61600(); return; - } - /* Next insn is delay slot */ - pc=0x61ab4; - run_61a00(); return; - case 0x61cf4: - r2 = r0 + -257; - r19 = r19 & r2; - /* Next insn is delay slot */ - pc=0x61ac4; - run_61a00(); return; - case 0x61d04: - r2 = r19 & 512; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61ab4; - run_61a00(); return; - } - r2 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; - r4 = r0 + -641; - r19 = r19 & r4; - writePages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x61a80; - run_61a00(); return; - case 0x61d28: - r2 = r19 & 128; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61ab4; - run_61a00(); return; - } - r2 = r0 + -129; - r19 = r19 & r2; - /* Next insn is delay slot */ - pc=0x61a80; - run_61a00(); return; - case 0x61d44: - r2 = r0 + 7; - if(r18 != r2) { - /* Next insn is delay slot */ - pc=0x61ab4; - run_61a00(); return; - } - r18 = r0 + 8; - /* Next insn is delay slot */ - pc=0x61a80; - run_61a00(); return; - case 0x61d5c: - r2 = r0 + 6; - if(r18 != r2) { - /* Next insn is delay slot */ - pc=0x61ab4; - run_61a00(); return; - } - r18 = r0 + 7; - /* Next insn is delay slot */ - pc=0x61a80; - run_61a00(); return; - case 0x61d74: - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x624ac; - run_62400(); return; - } - r4 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x62590; - run_62400(); return; - } - case 0x61d8c: - r2 = r0 + 1; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x61da4; - continue; - } - r2 = r0 + 4; - if(r18 != r2) { - /* Next insn is delay slot */ - pc=0x61ab4; - run_61a00(); return; - } - case 0x61da4: - r18 = r18 + 1; - r18 = r18 << 24; - r18 = r18 >> 24; - /* Next insn is delay slot */ - pc=0x61a80; - run_61a00(); return; - case 0x61db8: - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x624c4; - run_62400(); return; - } - r2 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x61cf4; - continue; - } - r4 = r19 & 1792; - r2 = r0 + 1792; - if(r4 != r2) { - /* Next insn is delay slot */ - pc=0x61ac4; - run_61a00(); return; - } - r19 = r19 & r11; - r18 = r0 + 1; - /* Next insn is delay slot */ - pc=0x61a80; - run_61a00(); return; - case 0x61df0: - r2 = r0 + 2; - if(r18 != r2) { - /* Next insn is delay slot */ - pc=0x61ab4; - run_61a00(); return; - } - r18 = r0 + 3; - case 0x61e00: - pc=0x61e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_61e00() throws ExecutionException { /* 0x61e00 - 0x62000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x61e00: - /* Next insn is delay slot */ - pc=0x61a80; - run_61a00(); return; - case 0x61e08: - r2 = r19 & 1280; - r4 = r0 + 1024; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x61e34; - continue; - } - r2 = r19 & 1024; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61ab4; - run_61a00(); return; - } - r2 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61ac4; - run_61a00(); return; - } - case 0x61e34: - r2 = r19 & 512; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x61e54; - continue; - } - r4 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; - r2 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; - writePages[(r29+676)>>>12][((r29+676)>>>2)&0x3ff] = r22; - r4 = r4 - r2; - writePages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff] = r4; - case 0x61e54: - r19 = r19 & r11; - r19 = r19 | 384; - writePages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x61a80; - run_61a00(); return; - case 0x61e68: - r2 = r0 + 1; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x61ab4; - run_61a00(); return; - } - r3 = r0 + 2; - /* Next insn is delay slot */ - pc=0x61a80; - run_61a00(); return; - case 0x61e80: - r2 = r18 & 1536; - if(r2 != r7) { - /* Next insn is delay slot */ - pc=0x61ecc; - continue; - } - r2 = r0 + -513; - r18 = r18 & r2; - r18 = r18 | 1280; - r16 = r0 + 16; - case 0x61e9c: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - addr=r19+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r2 + -1; - r19 = r19 + 1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x61fc4; - continue; - } - case 0x61eb8: - r5 = r5 + 1; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r5; - case 0x61ec0: - r23 = r23 + -1; - if(r23 != r0) { - /* Next insn is delay slot */ - pc=0x61a28; - run_61a00(); return; - } - case 0x61ecc: - r2 = r18 & 256; - writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r16; - r16 = r20 + r0; - r20 = r11 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61ef8; - continue; - } - r2 = ((r10 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x62620; - run_62600(); return; - } - case 0x61ef0: - if(r10 == r19) { - /* Next insn is delay slot */ - pc=0x61740; - run_61600(); return; - } - case 0x61ef8: - r2 = r18 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x624e4; - run_62400(); return; - } - case 0x61f04: - r10 = r19 - r10; - r23 = r10 + r8; - r21 = r21 + r23; - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - case 0x61f18: - r2 = r16 < 11 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x61ecc; - continue; - } - r2 = r0 + -2945; - r18 = r18 & r2; - /* Next insn is delay slot */ - pc=0x61e9c; - continue; - case 0x61f34: - r2 = r18 & 128; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61ecc; - continue; - } - r2 = r0 + -129; - r18 = r18 & r2; - /* Next insn is delay slot */ - pc=0x61e9c; - continue; - case 0x61f50: - r2 = r16 << 1; - r2 = r2 + r22; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r16 = tmp; - r2 = r0 + -2945; - r18 = r18 & r2; - /* Next insn is delay slot */ - pc=0x61e9c; - continue; - case 0x61f6c: - r2 = r18 & 2048; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61e9c; - continue; - } - if(r16 != r0) { - /* Next insn is delay slot */ - pc=0x61f88; - continue; - } - r18 = r18 | 512; - r16 = r0 + 8; - case 0x61f88: - r2 = r18 & 1024; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x62580; - run_62400(); return; - } - r2 = r0 + -897; - r18 = r18 & r2; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x61fac; - continue; - } - r6 = r6 + -1; - r23 = r23 + 1; - case 0x61fac: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r8 = r8 + 1; - r2 = r2 + -1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x61eb8; - continue; - } - case 0x61fc4: - r4 = r17 + r0; - r5 = r30 + r0; - writePages[(r29+680)>>>12][((r29+680)>>>2)&0x3ff] = r6; - writePages[(r29+684)>>>12][((r29+684)>>>2)&0x3ff] = r7; - writePages[(r29+688)>>>12][((r29+688)>>>2)&0x3ff] = r8; - writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; - writePages[(r29+692)>>>12][((r29+692)>>>2)&0x3ff] = r11; - /* Next insn is delay slot */ - r31=0x61fe8; - pc=0x68e00; - run_68e00(); return; - case 0x61fe8: - r6 = readPages[(r29+680)>>>12][((r29+680)>>>2)&0x3ff]; - r7 = readPages[(r29+684)>>>12][((r29+684)>>>2)&0x3ff]; - r8 = readPages[(r29+688)>>>12][((r29+688)>>>2)&0x3ff]; - r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; - r11 = readPages[(r29+692)>>>12][((r29+692)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61ec0; - continue; - } - case 0x62000: - pc=0x62000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_62000() throws ExecutionException { /* 0x62000 - 0x62200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x62000: - /* Next insn is delay slot */ - pc=0x61ecc; - run_61e00(); return; - case 0x6200c: - r2 = r16 << 1; - r2 = r2 + r22; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r16 = tmp; - r2 = r16 < 9 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x61ecc; - run_61e00(); return; - } - r2 = r0 + -2945; - r18 = r18 & r2; - /* Next insn is delay slot */ - pc=0x61e9c; - run_61e00(); return; - case 0x62038: - r6 = r23 + -349; - r23 = r0 + 349; - /* Next insn is delay slot */ - pc=0x61a00; - run_61a00(); return; - case 0x62048: - r18 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - r10 = r29 + 24; - r19 = r20 + 4; - r22 = r10 + r0; - r20 = r18 + r0; - case 0x6205c: - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r22 + r3; - addr=r3+352; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x620dc; - continue; - } - r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r20 = r20 + 1; - r3 = r3 + -1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; - r3 = r2 + 1; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r3; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r23 = r23 + -1; - addr=r20+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r23 == r0) { - /* Next insn is delay slot */ - pc=0x620dc; - continue; - } - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x6205c; - continue; - } - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x620cc; - pc=0x68e00; - run_68e00(); return; - case 0x620cc: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6205c; - continue; - } - if(r18 == r20) { - /* Next insn is delay slot */ - pc=0x6178c; - run_61600(); return; - } - case 0x620dc: - r18 = r20 - r18; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x61740; - run_61600(); return; - } - r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; - addr=r20+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = r3 + 1; - writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r3; - r20 = r19 + r0; - r21 = r21 + r18; - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - case 0x62108: - r23 = r23 + -349; - writePages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff] = r23; - r23 = r0 + 349; - /* Next insn is delay slot */ - pc=0x61610; - run_61600(); return; - case 0x6211c: - r2 = 4 << 16; - r2 = r2 + 12800; - writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = r2; - writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r0; - r19 = r0 + 3; - /* Next insn is delay slot */ - pc=0x615b0; - run_61400(); return; - case 0x62138: - r18 = r18 | 1; - /* Next insn is delay slot */ - pc=0x61540; - run_61400(); return; - case 0x62144: - r18 = r18 | 4; - /* Next insn is delay slot */ - pc=0x61540; - run_61400(); return; - case 0x62150: - r18 = r18 | 64; - r19 = r0 + r0; - /* Next insn is delay slot */ - pc=0x615b0; - run_61400(); return; - case 0x62160: - r5 = r16 + r0; - r4 = r29 + 376; - /* Next insn is delay slot */ - r31=0x62170; - pc=0x66800; - run_66800(); return; - case 0x62170: - r16 = r2 + r0; - r18 = r18 | 64; - r19 = r0 + 1; - /* Next insn is delay slot */ - pc=0x615b0; - run_61400(); return; - case 0x62184: - r18 = r18 | 512; - case 0x62188: - r2 = 6 << 16; - r2 = r2 + -2048; - r3 = r0 + 16; - writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = r2; - writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r3; - r19 = r0 + 3; - /* Next insn is delay slot */ - pc=0x615b0; - run_61400(); return; - case 0x621a8: - r18 = r18 | 2; - /* Next insn is delay slot */ - pc=0x61540; - run_61400(); return; - case 0x621b4: - r19 = r0 + 4; - /* Next insn is delay slot */ - pc=0x615b0; - run_61400(); return; - case 0x621c0: - r2 = r23 << 1; - r23 = r23 << 3; - r2 = r2 + r23; - r3 = r3 + -48; - r23 = r3 + r2; - /* Next insn is delay slot */ - pc=0x61540; - run_61400(); return; - case 0x621dc: - r18 = r18 | 16; - /* Next insn is delay slot */ - pc=0x61540; - run_61400(); return; - case 0x621e8: - r2 = 6 << 16; - r2 = r2 + -2048; - r3 = r0 + 10; - writePages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff] = r2; - writePages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff] = r3; - r19 = r0 + 3; - case 0x62200: - pc=0x62200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_62200() throws ExecutionException { /* 0x62200 - 0x62400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x62200: - /* Next insn is delay slot */ - pc=0x615b0; - run_61400(); return; - case 0x62208: - r19 = r0 + 2; - /* Next insn is delay slot */ - pc=0x615b0; - run_61400(); return; - case 0x62214: - r18 = r18 | 544; - /* Next insn is delay slot */ - pc=0x62188; - run_62000(); return; - case 0x62220: - r2 = r18 & 16; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - } - r2 = r18 & 4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x627a0; - run_62600(); return; - } - r2 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - r20 = r20 + 4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r21&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - case 0x6224c: - r3 = r29 + 632; - r4 = r3 + r0; - r5 = r0 + r0; - r6 = r0 + 8; - r18 = r18 & 16; - writePages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x6226c; - pc=0x48fec; - run_48e00(); return; - case 0x6226c: - writePages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff] = r18; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x625e4; - run_62400(); return; - } - r18 = r0 + r0; - case 0x6227c: - r22 = r0 + r0; - writePages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff] = r16; - r19 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; - r16 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; - writePages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff] = r20; - r20 = r22 + r0; - case 0x62294: - /* Next insn is delay slot */ - r31=0x6229c; - pc=0x5a800; - run_5a800(); return; - case 0x6229c: - if(r2 == r20) { - /* Next insn is delay slot */ - pc=0x6178c; - run_61600(); return; - } - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r4 = r29 + 24; - r3 = r4 + r20; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r22 = r20 + 1; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r2 = r2 + 1; - r3 = r3 + -1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - r5 = r18 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r4 = r17 + r0; - r6 = r29 + 24; - r7 = r22 + r0; - /* Next insn is delay slot */ - r31=0x622ec; - pc=0x66000; - run_66000(); return; - case 0x622ec: - r5 = r0 + -1; - if(r2 == r5) { - /* Next insn is delay slot */ - pc=0x6178c; - run_61600(); return; - } - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x626e0; - run_62600(); return; - } - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x6230c; - continue; - } - writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r0; - case 0x6230c: - r21 = r21 + r22; - r23 = r23 + -1; - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x626f8; - run_62600(); return; - } - r18 = r18 + 4; - r20 = r0 + r0; - case 0x62324: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x625b0; - run_62400(); return; - } - case 0x62334: - if(r23 != r0) { - /* Next insn is delay slot */ - pc=0x62294; - continue; - } - r16 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; - r20 = readPages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff]; - case 0x62344: - r3 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x61c48; - run_61c00(); return; - } - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - case 0x6235c: - r3 = r29 + 632; - r4 = r3 + r0; - r5 = r0 + r0; - r6 = r0 + 8; - r18 = r18 & 16; - writePages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x6237c; - pc=0x48fec; - run_48e00(); return; - case 0x6237c: - writePages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff] = r18; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x625f4; - run_62400(); return; - } - r19 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - r20 = r20 + 4; - case 0x62390: - r6 = r0 + r0; - writePages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff] = r16; - r22 = r0 + -2; - r16 = r6 + r0; - case 0x623a0: - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r3 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r3 + r2; - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r2 & 8; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x623d0; - continue; - } - if(r23 != r0) { - /* Next insn is delay slot */ - pc=0x627b4; - run_62600(); return; - } - case 0x623d0: - r16 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; - case 0x623d4: - r3 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - } - r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r0; - r3 = r3 + 1; - writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - case 0x623fc: - r19 = r20 + 4; - case 0x62400: - pc=0x62400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_62400() throws ExecutionException { /* 0x62400 - 0x62600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x62400: - r20 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - r18 = r20 + r0; - case 0x6240c: - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r5 + r3; - addr=r3+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r3 = r3 & 8; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x62488; - continue; - } - r3 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r18 = r18 + 1; - r3 = r3 + -1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r3; - r3 = r2 + 1; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r3; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r23 = r23 + -1; - addr=r18+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r23 == r0) { - /* Next insn is delay slot */ - pc=0x62488; - continue; - } - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x6240c; - continue; - } - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x62480; - pc=0x68e00; - run_68e00(); return; - case 0x62480: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6240c; - continue; - } - case 0x62488: - r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; - addr=r18+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = r3 + 1; - r18 = r18 - r20; - r21 = r21 + r18; - writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r3; - r20 = r19 + r0; - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - case 0x624ac: - r2 = r0 + 2; - if(r3 != r2) { - /* Next insn is delay slot */ - pc=0x61d8c; - run_61c00(); return; - } - r3 = r0 + 3; - /* Next insn is delay slot */ - pc=0x61a80; - run_61a00(); return; - case 0x624c4: - r2 = r0 + 3; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x61da4; - run_61c00(); return; - } - r2 = r0 + 5; - if(r18 == r2) { - /* Next insn is delay slot */ - pc=0x61da4; - run_61c00(); return; - } - /* Next insn is delay slot */ - pc=0x61ab4; - run_61a00(); return; - case 0x624e4: - r3 = readPages[(r29+660)>>>12][((r29+660)>>>2)&0x3ff]; - r7 = readPages[(r29+652)>>>12][((r29+652)>>>2)&0x3ff]; - addr=r19+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r5 = r10 + r0; - writePages[(r29+688)>>>12][((r29+688)>>>2)&0x3ff] = r8; - writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; - r4 = r17 + r0; - r6 = r0 + r0; - /* Next insn is delay slot */ - pc=r3; - r31=0x6250c; - return; - case 0x6250c: - r3 = r18 & 32; - r8 = readPages[(r29+688)>>>12][((r29+688)>>>2)&0x3ff]; - r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x62600; - run_62600(); return; - } - case 0x62520: - r3 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - r20 = r20 + 4; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - case 0x6252c: - r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; - r3 = r3 + 1; - writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x61f04; - run_61e00(); return; - case 0x62544: - r9 = r19 & 2; - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x61c38; - run_61c00(); return; - } - f12 = f0; - f13 = f1; - r18 = r20 + 4; - r19 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x62564; - pc=0x37a00; - run_37a00(); return; - case 0x62564: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x62878; - run_62800(); return; - } - f20=Float.floatToRawIntBits((float)(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = f20; - r20 = r18 + r0; - /* Next insn is delay slot */ - pc=0x61c48; - run_61c00(); return; - case 0x62580: - r2 = r0 + -1409; - r18 = r18 & r2; - /* Next insn is delay slot */ - pc=0x61e9c; - run_61e00(); return; - case 0x62590: - r4 = r19 & 1792; - r2 = r0 + 1792; - if(r4 != r2) { - /* Next insn is delay slot */ - pc=0x61d8c; - run_61c00(); return; - } - r19 = r19 & r11; - r3 = r0 + 1; - /* Next insn is delay slot */ - pc=0x61a80; - run_61a00(); return; - case 0x625b0: - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x625c0; - pc=0x68e00; - run_68e00(); return; - case 0x625c0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x62334; - run_62200(); return; - } - r22 = r20 + r0; - r16 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; - r20 = readPages[(r29+672)>>>12][((r29+672)>>>2)&0x3ff]; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x62344; - run_62200(); return; - } - /* Next insn is delay slot */ - pc=0x6178c; - run_61600(); return; - case 0x625e4: - r18 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - r20 = r20 + 4; - /* Next insn is delay slot */ - pc=0x6227c; - run_62200(); return; - case 0x625f4: - r19 = r29 + 640; - /* Next insn is delay slot */ - pc=0x62390; - run_62200(); return; - case 0x62600: - pc=0x62600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_62600() throws ExecutionException { /* 0x62600 - 0x62800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x62600: - r3 = r18 & 4; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x62520; - run_62400(); return; - } - r3 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - r20 = r20 + 4; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x6252c; - run_62400(); return; - case 0x62620: - addr=r19+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r22 = r19 + -1; - r4 = r17 + r0; - r6 = r30 + r0; - writePages[(r29+688)>>>12][((r29+688)>>>2)&0x3ff] = r8; - writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; - r19 = r22 + r0; - /* Next insn is delay slot */ - r31=0x62644; - pc=0x68c00; - run_68c00(); return; - case 0x62644: - r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; - r8 = readPages[(r29+688)>>>12][((r29+688)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x61ef0; - run_61e00(); return; - case 0x62654: - r3 = readPages[(r29+676)>>>12][((r29+676)>>>2)&0x3ff]; - r6 = r0 + r0; - r5 = r3 + 1; - r4 = r17 + r0; - r7 = r0 + 10; - writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; - /* Next insn is delay slot */ - r31=0x62674; - pc=0x43200; - run_43200(); return; - case 0x62674: - r3 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; - r22 = readPages[(r29+676)>>>12][((r29+676)>>>2)&0x3ff]; - r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; - r6 = r2 - r3; - case 0x62684: - r2 = r29 + 363; - r2 = ((r22 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x62698; - continue; - } - r22 = r29 + 362; - case 0x62698: - r2 = 7 << 16; - r4 = r22 + r0; - r5 = r2 + 2764; - writePages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff] = r10; - /* Next insn is delay slot */ - r31=0x626b0; - pc=0x42000; - run_42000(); return; - case 0x626b0: - r10 = readPages[(r29+696)>>>12][((r29+696)>>>2)&0x3ff]; - r4 = r17 + r0; - r5 = r10 + r0; - r6 = r0 + r0; - /* Next insn is delay slot */ - r31=0x626c8; - pc=0x66c00; - run_66c00(); return; - case 0x626c8: - r2 = r19 & 1; - f20 = f0; - f21 = f1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x62544; - run_62400(); return; - } - /* Next insn is delay slot */ - pc=0x61c38; - run_61c00(); return; - case 0x626e0: - r3 = r0 + -2; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x6230c; - run_62200(); return; - } - r20 = r22 + r0; - /* Next insn is delay slot */ - pc=0x62324; - run_62200(); return; - case 0x626f8: - r20 = r0 + r0; - /* Next insn is delay slot */ - pc=0x62324; - run_62200(); return; - case 0x62704: - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x6178c; - run_61600(); return; - } - r21 = r21 + r18; - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - case 0x62718: - r5 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - r4 = r17 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r30; - r6 = r0 + 1; - r7 = r23 + r0; - r18 = r20 + 4; - /* Next insn is delay slot */ - r31=0x62738; - pc=0x69000; - run_69000(); return; - case 0x62738: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6178c; - run_61600(); return; - } - r3 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; - r21 = r2 + r21; - r3 = r3 + 1; - writePages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff] = r3; - r20 = r18 + r0; - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - case 0x6275c: - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x6276c; - pc=0x68e00; - run_68e00(); return; - case 0x6276c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x616fc; - run_61600(); return; - } - /* Next insn is delay slot */ - pc=0x6178c; - run_61600(); return; - case 0x6277c: - r3 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; - r4 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; - r18 = r3 - r4; - r6 = r0 - r18; - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x62684; - continue; - } - /* Next insn is delay slot */ - pc=0x61c14; - run_61c00(); return; - case 0x627a0: - r2 = readPages[(r20+0)>>>12][((r20+0)>>>2)&0x3ff]; - r20 = r20 + 4; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r21; - /* Next insn is delay slot */ - pc=0x6147c; - run_61400(); return; - case 0x627b4: - /* Next insn is delay slot */ - r31=0x627bc; - pc=0x5a800; - run_5a800(); return; - case 0x627bc: - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x6178c; - run_61600(); return; - } - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r4 = r29 + 24; - r18 = r16 + 1; - r16 = r4 + r16; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r3 = readPages[(r29+656)>>>12][((r29+656)>>>2)&0x3ff]; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r2 = r2 + 1; - r4 = r4 + -1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - r4 = r17 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - r5 = r19 + r0; - case 0x62800: - pc=0x62800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_62800() throws ExecutionException { /* 0x62800 - 0x62a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x62800: - r6 = r29 + 24; - r7 = r18 + r0; - /* Next insn is delay slot */ - r31=0x62810; - pc=0x66000; - run_66000(); return; - case 0x62810: - r4 = r0 + -1; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x6178c; - run_61600(); return; - } - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x62894; - continue; - } - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r0; - r4 = r0 + r0; - case 0x6282c: - /* Next insn is delay slot */ - r31=0x62834; - pc=0x65e00; - run_65e00(); return; - case 0x62834: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x629a0; - continue; - } - r16 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x623d4; - run_62200(); return; - } - case 0x62848: - r18 = r18 + -1; - r5 = r29 + 24; - r2 = r5 + r18; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r5 = tmp; - r4 = r17 + r0; - r6 = r30 + r0; - /* Next insn is delay slot */ - r31=0x62868; - pc=0x68c00; - run_68c00(); return; - case 0x62868: - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x62848; - continue; - } - /* Next insn is delay slot */ - pc=0x623d4; - run_62200(); return; - case 0x62878: - r4 = r0 + r0; - /* Next insn is delay slot */ - r31=0x62884; - pc=0x66a00; - run_66a00(); return; - case 0x62884: - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = f0; - r20 = r18 + r0; - /* Next insn is delay slot */ - pc=0x61c48; - run_61c00(); return; - case 0x62894: - if(r2 != r22) { - /* Next insn is delay slot */ - pc=0x629c4; - continue; - } - r16 = r18 + r0; - case 0x628a0: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x623a0; - run_62200(); return; - } - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x628c0; - pc=0x68e00; - run_68e00(); return; - case 0x628c0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x623a0; - run_62200(); return; - } - r6 = r16 + r0; - r16 = readPages[(r29+664)>>>12][((r29+664)>>>2)&0x3ff]; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x6178c; - run_61600(); return; - } - /* Next insn is delay slot */ - pc=0x623d4; - run_62200(); return; - case 0x628e0: - r2 = ((r10 & 0xffffffffL) < (r22 & 0xffffffffL)) ? 1 : 0; - r23 = r22 + r0; - r16 = r10 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61740; - run_61600(); return; - } - case 0x628f4: - r23 = r23 + -1; - addr=r23+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r4 = r17 + r0; - r6 = r30 + r0; - /* Next insn is delay slot */ - r31=0x6290c; - pc=0x68c00; - run_68c00(); return; - case 0x6290c: - if(r23 != r16) { - /* Next insn is delay slot */ - pc=0x628f4; - continue; - } - r2 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x617b4; - run_61600(); return; - case 0x62920: - r2 = ((r10 & 0xffffffffL) < (r22 & 0xffffffffL)) ? 1 : 0; - r23 = r22 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61740; - run_61600(); return; - } - r16 = r10 + r0; - case 0x62934: - r23 = r23 + -1; - addr=r23+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r4 = r17 + r0; - r6 = r30 + r0; - /* Next insn is delay slot */ - r31=0x6294c; - pc=0x68c00; - run_68c00(); return; - case 0x6294c: - if(r23 != r16) { - /* Next insn is delay slot */ - pc=0x62934; - continue; - } - r2 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x617b4; - run_61600(); return; - case 0x62960: - r2 = ((r10 & 0xffffffffL) < (r22 & 0xffffffffL)) ? 1 : 0; - r23 = r22 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x61740; - run_61600(); return; - } - r16 = r10 + r0; - case 0x62974: - r23 = r23 + -1; - addr=r23+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r4 = r17 + r0; - r6 = r30 + r0; - /* Next insn is delay slot */ - r31=0x6298c; - pc=0x68c00; - run_68c00(); return; - case 0x6298c: - if(r23 != r16) { - /* Next insn is delay slot */ - pc=0x62974; - continue; - } - r2 = readPages[(r29+648)>>>12][((r29+648)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x617b4; - run_61600(); return; - case 0x629a0: - r3 = readPages[(r29+668)>>>12][((r29+668)>>>2)&0x3ff]; - r21 = r21 + r18; - r23 = r23 + -1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x629d0; - continue; - } - r19 = r19 + 4; - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x628a0; - continue; - case 0x629c4: - r4 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x6282c; - continue; - case 0x629d0: - r16 = r0 + r0; - /* Next insn is delay slot */ - pc=0x628a0; - continue; - case 0x62a00: - pc=0x62a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_62a00() throws ExecutionException { /* 0x62a00 - 0x62c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x62a00: - r5 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x48860; - run_48800(); return; - case 0x62c00: - pc=0x62c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_62c00() throws ExecutionException { /* 0x62c00 - 0x62e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x62c00: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x48cd0; - run_48c00(); return; - case 0x62e00: - pc=0x62e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_62e00() throws ExecutionException { /* 0x62e00 - 0x63000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x62e00: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; + r4 = readPages[(r28 + -31512) >>> 12][((r28 + -31512) >>> 2) & 0x3ff]; r6 = r5 + r0; r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x48960; - run_48800(); return; - case 0x63000: - pc=0x63000; + /* Next insn is delay slot */ + pc = 0x4d750; + run_4d600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x53800: + pc = 0x53800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_63000() throws ExecutionException { /* 0x63000 - 0x63200 */ + + private final void run_53800() throws ExecutionException { /* 0x53800 - 0x53a00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x63000: - r29 = r29 + -32; - r2 = r4 + r0; - r4 = r29 + 40; - r3 = r5 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r6; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r7; - r5 = r2 + r0; - r7 = r6 + r0; - r6 = r3 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x63038; - pc=0x48820; - run_48800(); return; - case 0x63038: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x63200: - pc=0x63200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_63200() throws ExecutionException { /* 0x63200 - 0x63400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x63200: - r2 = readPages[(r5+100)>>>12][((r5+100)>>>2)&0x3ff]; + for (;;) { + switch (pc) { + case 0x53800: + r2 = readPages[(r5 + 100) >>> 12][((r5 + 100) >>> 2) & 0x3ff]; r29 = r29 + -56; r2 = r2 & 8192; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r22; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r23; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r22; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r23; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff] = r16; r19 = r5 + r0; r22 = r6 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x63308; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x53908; continue; } - r2 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; + r2 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; r20 = r4 + r0; - r23 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; + r23 = readPages[(r6 + 0) >>> 12][((r6 + 0) >>> 2) & 0x3ff]; r21 = r0 + -1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x632fc; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x538fc; continue; } - case 0x63258: - r18 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; - r16 = readPages[(r23+0)>>>12][((r23+0)>>>2)&0x3ff]; + case 0x53858: + r18 = readPages[(r23 + 4) >>> 12][((r23 + 4) >>> 2) & 0x3ff]; + r16 = readPages[(r23 + 0) >>> 12][((r23 + 0) >>> 2) & 0x3ff]; r18 = r18 >>> 2; r17 = r0 + r0; - if(r18 > 0) { - /* Next insn is delay slot */ - pc=0x63288; + if (r18 > 0) { + /* Next insn is delay slot */ + pc = 0x53888; continue; } - /* Next insn is delay slot */ - pc=0x632e4; + /* Next insn is delay slot */ + pc = 0x538e4; continue; - case 0x63278: + case 0x53878: r17 = r17 + 1; r16 = r16 + 4; - if(r18 == r17) { - /* Next insn is delay slot */ - pc=0x632e0; + if (r18 == r17) { + /* Next insn is delay slot */ + pc = 0x538e0; continue; } - case 0x63288: - r5 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + case 0x53888: + r5 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r4 = r20 + r0; r6 = r19 + r0; - /* Next insn is delay slot */ - r31=0x6329c; - pc=0x65800; - run_65800(); return; - case 0x6329c: - if(r2 != r21) { - /* Next insn is delay slot */ - pc=0x63278; + /* Next insn is delay slot */ + r31 = 0x5389c; + pc = 0x54000; + run_54000(); + return; + case 0x5389c: + if (r2 != r21) { + /* Next insn is delay slot */ + pc = 0x53878; continue; } r2 = r0 + -1; - case 0x632a8: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r23 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - writePages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff] = r0; - writePages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff] = r0; - r22 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; + case 0x538a8: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r23 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; + writePages[(r22 + 8) >>> 12][((r22 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r22 + 4) >>> 12][((r22 + 4) >>> 2) & 0x3ff] = r0; + r22 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x632e0: - r2 = readPages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff]; - case 0x632e4: + case 0x538e0: + r2 = readPages[(r22 + 8) >>> 12][((r22 + 8) >>> 2) & 0x3ff]; + case 0x538e4: r18 = r18 << 2; r2 = r2 - r18; - writePages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff] = r2; + writePages[(r22 + 8) >>> 12][((r22 + 8) >>> 2) & 0x3ff] = r2; r23 = r23 + 8; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63258; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x53858; continue; } - case 0x632fc: + case 0x538fc: r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x632a8; + /* Next insn is delay slot */ + pc = 0x538a8; continue; - case 0x63308: - /* Next insn is delay slot */ - r31=0x63310; - pc=0x59c00; - run_59c00(); return; - case 0x63310: - /* Next insn is delay slot */ - pc=0x632a8; - continue; - case 0x63400: - pc=0x63400; + case 0x53908: + /* Next insn is delay slot */ + r31 = 0x53910; + pc = 0x50600; + run_50600(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x53910: + /* Next insn is delay slot */ + pc = 0x538a8; + continue; + case 0x53a00: + pc = 0x53a00; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_63400() throws ExecutionException { /* 0x63400 - 0x63600 */ + + private final void run_53a00() throws ExecutionException { /* 0x53a00 - 0x53c00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x63400: - r3 = readPages[(r6+8)>>>12][((r6+8)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x63418; + for (;;) { + switch (pc) { + case 0x53a00: + r3 = readPages[(r6 + 8) >>> 12][((r6 + 8) >>> 2) & 0x3ff]; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x53a18; continue; } - /* Next insn is delay slot */ - pc=0x63200; - run_63200(); return; - case 0x63418: - writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x53800; + run_53800(); + return; + case 0x53a18: + writePages[(r6 + 4) >>> 12][((r6 + 4) >>> 2) & 0x3ff] = r0; r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x63600: - pc=0x63600; + case 0x53c00: + pc = 0x53c00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_63600() throws ExecutionException { /* 0x63600 - 0x63800 */ + + private final void run_53c00() throws ExecutionException { /* 0x53c00 - 0x53e00 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x63600: - r29 = r29 + -1248; - writePages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff] = r23; - writePages[(r29+1224)>>>12][((r29+1224)>>>2)&0x3ff] = r20; - writePages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff] = r18; - writePages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff] = r31; - writePages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff] = r30; - writePages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff] = r22; - writePages[(r29+1228)>>>12][((r29+1228)>>>2)&0x3ff] = r21; - writePages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff] = r19; - writePages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff] = r17; - writePages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff] = r16; - r18 = r4 + r0; - r23 = r5 + r0; - r20 = r6 + r0; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r7; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x63654; - continue; - } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6414c; - run_64000(); return; - } - case 0x63654: - addr=r23+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r3 = tmp; - r2 = r3 & 65535; - r4 = r2 & 8192; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x63688; - continue; - } - r4 = readPages[(r23+100)>>>12][((r23+100)>>>2)&0x3ff]; - r2 = r0 + -8193; - r3 = r3 | 8192; - r2 = r4 & r2; - writePages[(r23+100)>>>12][((r23+100)>>>2)&0x3ff] = r2; - addr=r23+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r3 & 65535; - case 0x63688: - r4 = r2 & 8; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x63fd4; - run_63e00(); return; - } - r4 = readPages[(r23+16)>>>12][((r23+16)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x63fd4; - run_63e00(); return; - } - r2 = r2 & 26; - r4 = r0 + 10; - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x64004; - run_64000(); return; - } - case 0x636b4: - r3 = r29 + 1080; - writePages[(r29+1160)>>>12][((r29+1160)>>>2)&0x3ff] = r3; - r4 = readPages[(r29+1160)>>>12][((r29+1160)>>>2)&0x3ff]; - r3 = r29 + 1079; - r21 = r29 + 16; - r10 = 7 << 16; - writePages[(r29+1164)>>>12][((r29+1164)>>>2)&0x3ff] = r3; - r3 = r4 - r3; - writePages[(r29+1192)>>>12][((r29+1192)>>>2)&0x3ff] = r3; - writePages[(r29+1144)>>>12][((r29+1144)>>>2)&0x3ff] = r21; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r0; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r0; - writePages[(r29+1188)>>>12][((r29+1188)>>>2)&0x3ff] = r0; - writePages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff] = r0; - r22 = r10 + 4292; - r3 = r21 + r0; - writePages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff] = r18; - writePages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff] = r23; - r16 = r20 + r0; - case 0x63700: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x64728; - run_64600(); return; - } - r4 = r0 + 37; - r17 = r16 + r0; - if(r2 != r4) { - /* Next insn is delay slot */ - pc=0x63730; - continue; - } - /* Next insn is delay slot */ - pc=0x63798; - continue; - case 0x63728: - if(r2 == r4) { - /* Next insn is delay slot */ - pc=0x63744; - continue; - } - case 0x63730: - r17 = r17 + 1; - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63728; - continue; - } - case 0x63744: - r19 = r17 - r16; - if(r19 == r0) { - /* Next insn is delay slot */ - pc=0x63798; - continue; - } - r2 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - r4 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r2 = r2 + 1; - r4 = r19 + r4; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r2; - r2 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r16; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r19; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r4; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x637fc; - continue; - } - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x64640; - run_64600(); return; - } - r5 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r0; - r5 = r5 + r19; - r3 = r21 + r0; - writePages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff] = r5; - case 0x63798: - addr=r17+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x647a0; - run_64600(); return; - } - r2 = r17 + 1; - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r6 = r0 + r0; - r30 = r0 + -1; - r17 = r0 + r0; - r23 = r0 + r0; - r7 = r0 + 42; - case 0x637c4: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r16 = r2 + 1; - case 0x637cc: - r2 = r4 + -32; - r5 = (r2&0xffffffffL) < (89&0xffffffffL) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x6457c; - run_64400(); return; - } - r5 = 7 << 16; - r2 = r2 << 2; - r5 = r5 + 3920; - r2 = r5 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x637fc: - r3 = r3 + 8; - case 0x63800: - pc=0x63800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_63800() throws ExecutionException { /* 0x63800 - 0x63a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x63800: - r5 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; - r5 = r5 + r19; - writePages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x63798; - run_63600(); return; - case 0x63818: - r23 = r23 | 16; - case 0x6381c: - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x637c4; - run_63600(); return; - case 0x63828: - r23 = r23 | 16; - case 0x6382c: - r2 = r23 & 16; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63c68; - run_63c00(); return; - } - r2 = r23 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x63c68; - run_63c00(); return; - } - r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - r4 = r0 + 1; - addr=r5+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r5 = r5 + 4; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x63884; - continue; - case 0x63860: - r23 = r23 | 16; - case 0x63864: - r2 = r23 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x642e8; - run_64200(); return; - } - case 0x63870: - r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - r4 = r0 + r0; - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r5 = r5 + 4; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; - case 0x63884: - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r19 = r30 + r0; - r5 = r0 + r0; - case 0x63890: - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x638a0; - continue; - } - r6 = r0 + -129; - r23 = r23 & r6; - case 0x638a0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63d50; - run_63c00(); return; - } - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x63d50; - run_63c00(); return; - } - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x64178; - run_64000(); return; - } - case 0x638b8: - r18 = r29 + 1080; - case 0x638bc: - r2 = r19 < r30 ? 1 : 0; - writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r19; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x638d0; - continue; - } - writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r30; - case 0x638d0: - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x638e8; - continue; - } - r2 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r2; - case 0x638e8: - r15 = r23 & 2; - if(r15 == r0) { - /* Next insn is delay slot */ - pc=0x63904; - continue; - } - r4 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; - r4 = r4 + 2; - writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r4; - case 0x63904: - r20 = r23 & 132; - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x63cc4; - run_63c00(); return; - } - r5 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; - r9 = r17 - r5; - if(r9 <= 0) { - /* Next insn is delay slot */ - pc=0x63cc4; - run_63c00(); return; - } - r2 = r9 < 17 ? 1 : 0; - r8 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x64854; - run_64800(); return; - } - writePages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff] = r16; - r4 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - writePages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff] = r22; - r25 = r0 + 16; - writePages[(r29+1196)>>>12][((r29+1196)>>>2)&0x3ff] = r15; - r16 = r9 + r0; - /* Next insn is delay slot */ - pc=0x63970; - continue; - case 0x63954: - r7 = r4 + 2; - r3 = r3 + 8; - r4 = r2 + r0; - case 0x63960: - r16 = r16 + -16; - r2 = r16 < 17 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x639b8; - continue; - } - case 0x63970: - r2 = r4 + 1; - r8 = r8 + 16; - r5 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r22; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r25; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r8; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r2; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x63954; - continue; - } - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x63c88; - run_63c00(); return; - } - r16 = r16 + -16; - r2 = r16 < 17 ? 1 : 0; - r4 = r0 + r0; - r7 = r0 + 1; - r3 = r21 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x63970; - continue; - } - case 0x639b8: - r9 = r16 + r0; - r15 = readPages[(r29+1196)>>>12][((r29+1196)>>>2)&0x3ff]; - r16 = readPages[(r29+1200)>>>12][((r29+1200)>>>2)&0x3ff]; - case 0x639c4: - r2 = readPages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff]; - r5 = r9 + r8; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r2 = r7 < 8 ? 1 : 0; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r9; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r7; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6415c; - run_64000(); return; - } - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r3 + 8; - r4 = r7 + 1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63ce0; - run_63c00(); return; - } - case 0x639fc: - if(r15 == r0) { - /* Next insn is delay slot */ - pc=0x63a38; - run_63a00(); return; - } - case 0x63a00: - pc=0x63a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_63a00() throws ExecutionException { /* 0x63a00 - 0x63c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x63a00: - r2 = r29 + 1156; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r2 = r0 + 2; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; - r5 = r5 + 2; - r2 = r4 < 8 ? 1 : 0; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x640e0; - run_64000(); return; - } - r7 = r4 + r0; - r3 = r3 + 8; - r4 = r4 + 1; - case 0x63a38: - r2 = r0 + 128; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x63ebc; - run_63e00(); return; - } - case 0x63a44: - r20 = r30 - r19; - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x63b0c; - continue; - } - r2 = r20 < 17 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x64790; - run_64600(); return; - } - r4 = 7 << 16; - r8 = r4 + 4276; - writePages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff] = r16; - r30 = r0 + 16; - r16 = r8 + r0; - /* Next insn is delay slot */ - pc=0x63a94; - continue; - case 0x63a78: - r4 = r7 + 2; - r3 = r3 + 8; - r7 = r2 + r0; - case 0x63a84: - r20 = r20 + -16; - r2 = r20 < 17 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63adc; - continue; - } - case 0x63a94: - r2 = r7 + 1; - r5 = r5 + 16; - r4 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r16; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r30; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r2; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x63a78; - continue; - } - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x63d1c; - run_63c00(); return; - } - r20 = r20 + -16; - r2 = r20 < 17 ? 1 : 0; - r7 = r0 + r0; - r4 = r0 + 1; - r3 = r21 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x63a94; - continue; - } - case 0x63adc: - r8 = r16 + r0; - r16 = readPages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff]; - case 0x63ae4: - r5 = r5 + r20; - r2 = r4 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r8; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r20; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x63e80; - run_63e00(); return; - } - r3 = r3 + 8; - r4 = r4 + 1; - case 0x63b0c: - r14 = r19 + r5; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r4; - r4 = r4 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r18; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r19; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r14; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x63ea4; - run_63e00(); return; - } - if(r14 != r0) { - /* Next insn is delay slot */ - pc=0x64614; - run_64600(); return; - } - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r0; - r3 = r21 + r0; - case 0x63b3c: - r12 = r23 & 4; - if(r12 == r0) { - /* Next insn is delay slot */ - pc=0x63c0c; - run_63c00(); return; - } - r5 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; - r18 = r17 - r5; - if(r18 <= 0) { - /* Next insn is delay slot */ - pc=0x63c0c; - run_63c00(); return; - } - r2 = r18 < 17 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x648a8; - run_64800(); return; - } - r4 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - writePages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff] = r22; - r19 = r0 + 16; - r20 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r23 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x63ba0; - continue; - case 0x63b84: - r5 = r4 + 2; - r3 = r3 + 8; - r4 = r2 + r0; - case 0x63b90: - r18 = r18 + -16; - r2 = r18 < 17 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63be8; - continue; - } - case 0x63ba0: - r2 = r4 + 1; - r14 = r14 + 16; - r5 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r22; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r19; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r14; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r2; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x63b84; - continue; - } - if(r14 != r0) { - /* Next insn is delay slot */ - pc=0x63e4c; - run_63e00(); return; - } - r18 = r18 + -16; - r2 = r18 < 17 ? 1 : 0; - r4 = r0 + r0; - r5 = r0 + 1; - r3 = r21 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x63ba0; - continue; - } - case 0x63be8: - r2 = readPages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff]; - r14 = r14 + r18; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r5; - r5 = r5 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r18; - case 0x63c00: - pc=0x63c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_63c00() throws ExecutionException { /* 0x63c00 - 0x63e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x63c00: - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r14; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x6451c; - run_64400(); return; - } - case 0x63c0c: - r19 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; - r2 = r19 < r17 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x63c24; - continue; - } - r19 = r17 + r0; - case 0x63c24: - r3 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; - r3 = r3 + r19; - writePages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff] = r3; - if(r14 == r0) { - /* Next insn is delay slot */ - pc=0x63c58; - continue; - } - r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r6 = r29 + 1144; - /* Next insn is delay slot */ - r31=0x63c50; - pc=0x63200; - run_63200(); return; - case 0x63c50: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63df8; - continue; - } - case 0x63c58: - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r0; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63700; - run_63600(); return; - case 0x63c68: - r4 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r4 = r4 + 4; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r4; - r4 = r0 + 1; - /* Next insn is delay slot */ - pc=0x63884; - run_63800(); return; - case 0x63c88: - r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r6 = r29 + 1144; - writePages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff] = r25; - /* Next insn is delay slot */ - r31=0x63ca0; - pc=0x63200; - run_63200(); return; - case 0x63ca0: - r25 = readPages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63df8; - continue; - } - r4 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - r8 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r7 = r4 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63960; - run_63800(); return; - case 0x63cc4: - r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r4 = r7 + 1; - case 0x63cd0: - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x639fc; - run_63800(); return; - } - case 0x63ce0: - r2 = r29 + 1158; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r2 = r0 + 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r2; - r5 = r5 + 1; - r2 = r4 < 8 ? 1 : 0; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x640c4; - run_64000(); return; - } - r7 = r4 + r0; - r3 = r3 + 8; - r4 = r4 + 1; - /* Next insn is delay slot */ - pc=0x639fc; - run_63800(); return; - case 0x63d1c: - r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r6 = r29 + 1144; - /* Next insn is delay slot */ - r31=0x63d30; - pc=0x63200; - run_63200(); return; - case 0x63d30: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63df8; - continue; - } - r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r4 = r7 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63a84; - run_63a00(); return; - case 0x63d50: - r6 = r0 + 1; - if(r4 == r6) { - /* Next insn is delay slot */ - pc=0x640fc; - run_64000(); return; - } - r6 = r0 + 2; - r18 = r29 + 1080; - if(r4 != r6) { - /* Next insn is delay slot */ - pc=0x63da4; - continue; - } - r6 = readPages[(r29+1188)>>>12][((r29+1188)>>>2)&0x3ff]; - case 0x63d70: - r4 = r2 & 15; - r4 = r6 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r18 = r18 + -1; - r2 = r2 >>> 4; - addr=r18+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63d70; - continue; - } - case 0x63d90: - r4 = readPages[(r29+1160)>>>12][((r29+1160)>>>2)&0x3ff]; - r19 = r4 - r18; - /* Next insn is delay slot */ - pc=0x638bc; - run_63800(); return; - case 0x63da4: - r4 = r2 & 7; - r18 = r18 + -1; - r4 = r4 + 48; - r2 = r2 >>> 3; - addr=r18+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63da4; - continue; - } - r2 = r23 & 1; - r6 = r18 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x63de4; - continue; - } - r2 = r0 + 48; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x63d90; - continue; - } - r18 = r18 + -1; - addr=r6+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x63de4: - r2 = readPages[(r29+1160)>>>12][((r29+1160)>>>2)&0x3ff]; - r19 = r2 - r18; - /* Next insn is delay slot */ - pc=0x638bc; - run_63800(); return; - case 0x63df8: - r23 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - case 0x63e00: - pc=0x63e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_63e00() throws ExecutionException { /* 0x63e00 - 0x64000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x63e00: - addr=r23+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r2 = r2 & 64; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63eb0; - continue; - } - r2 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; - case 0x63e18: - r31 = readPages[(r29+1244)>>>12][((r29+1244)>>>2)&0x3ff]; - r30 = readPages[(r29+1240)>>>12][((r29+1240)>>>2)&0x3ff]; - r23 = readPages[(r29+1236)>>>12][((r29+1236)>>>2)&0x3ff]; - r22 = readPages[(r29+1232)>>>12][((r29+1232)>>>2)&0x3ff]; - r21 = readPages[(r29+1228)>>>12][((r29+1228)>>>2)&0x3ff]; - r20 = readPages[(r29+1224)>>>12][((r29+1224)>>>2)&0x3ff]; - r19 = readPages[(r29+1220)>>>12][((r29+1220)>>>2)&0x3ff]; - r18 = readPages[(r29+1216)>>>12][((r29+1216)>>>2)&0x3ff]; - r17 = readPages[(r29+1212)>>>12][((r29+1212)>>>2)&0x3ff]; - r16 = readPages[(r29+1208)>>>12][((r29+1208)>>>2)&0x3ff]; - r29 = r29 + 1248; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x63e4c: - r4 = r20 + r0; - r5 = r23 + r0; - r6 = r29 + 1144; - /* Next insn is delay slot */ - r31=0x63e60; - pc=0x63200; - run_63200(); return; - case 0x63e60: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63e00; - continue; - } - r4 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - r14 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r5 = r4 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63b90; - run_63a00(); return; - case 0x63e80: - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x646f4; - run_64600(); return; - } - r2 = r0 + 1; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r19; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r19; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r2; - r14 = r19 + r0; - r3 = r21 + r0; - case 0x63ea4: - r3 = r3 + 8; - /* Next insn is delay slot */ - pc=0x63b3c; - run_63a00(); return; - case 0x63eb0: - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x63e18; - continue; - case 0x63ebc: - r2 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; - r20 = r17 - r2; - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x63a44; - run_63a00(); return; - } - r2 = r20 < 17 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x648d4; - run_64800(); return; - } - r4 = 7 << 16; - r8 = r4 + 4276; - writePages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff] = r16; - r9 = r0 + 16; - r16 = r8 + r0; - /* Next insn is delay slot */ - pc=0x63f14; - continue; - case 0x63ef8: - r6 = r7 + 2; - r3 = r3 + 8; - r7 = r2 + r0; - case 0x63f04: - r20 = r20 + -16; - r2 = r20 < 17 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63f5c; - continue; - } - case 0x63f14: - r2 = r7 + 1; - r5 = r5 + 16; - r4 = r2 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r16; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r9; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r2; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x63ef8; - continue; - } - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x63f98; - continue; - } - r20 = r20 + -16; - r2 = r20 < 17 ? 1 : 0; - r7 = r0 + r0; - r6 = r0 + 1; - r3 = r21 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x63f14; - continue; - } - case 0x63f5c: - r8 = r16 + r0; - r16 = readPages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff]; - case 0x63f64: - r5 = r5 + r20; - r2 = r6 < 8 ? 1 : 0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r8; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r20; - writePages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff] = r5; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r6; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x646d8; - run_64600(); return; - } - r3 = r3 + 8; - r4 = r6 + 1; - r7 = r6 + r0; - /* Next insn is delay slot */ - pc=0x63a44; - run_63a00(); return; - case 0x63f98: - r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r6 = r29 + 1144; - writePages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff] = r9; - /* Next insn is delay slot */ - r31=0x63fb0; - pc=0x63200; - run_63200(); return; - case 0x63fb0: - r9 = readPages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63df8; - run_63c00(); return; - } - r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r6 = r7 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63f04; - continue; - case 0x63fd4: - r4 = r18 + r0; - r5 = r23 + r0; - /* Next insn is delay slot */ - r31=0x63fe4; - pc=0x48600; - run_48600(); return; - case 0x63fe4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63eb0; - continue; - } - addr=r23+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r3 = tmp; - r4 = r0 + 10; - r2 = r3 & 65535; - r2 = r2 & 26; - if(r2 != r4) { - /* Next insn is delay slot */ - pc=0x636b4; - run_63600(); return; - } - case 0x64000: - pc=0x64000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_64000() throws ExecutionException { /* 0x64000 - 0x64200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x64000: - case 0x64004: - addr=r23+14; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r2 = tmp; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x636b4; - run_63600(); return; - } - addr=r29+1054; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r23+28)>>>12][((r23+28)>>>2)&0x3ff]; - r4 = r0 + -3; - writePages[(r29+1068)>>>12][((r29+1068)>>>2)&0x3ff] = r2; - r2 = readPages[(r23+36)>>>12][((r23+36)>>>2)&0x3ff]; - r3 = r3 & r4; - addr=r29+1052; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r3&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+1076)>>>12][((r29+1076)>>>2)&0x3ff] = r2; - r3 = readPages[(r23+100)>>>12][((r23+100)>>>2)&0x3ff]; - r2 = r29 + 16; - r7 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - writePages[(r29+1040)>>>12][((r29+1040)>>>2)&0x3ff] = r2; - writePages[(r29+1056)>>>12][((r29+1056)>>>2)&0x3ff] = r2; - r4 = r18 + r0; - r2 = r0 + 1024; - r5 = r29 + 1040; - r6 = r20 + r0; - writePages[(r29+1140)>>>12][((r29+1140)>>>2)&0x3ff] = r3; - writePages[(r29+1048)>>>12][((r29+1048)>>>2)&0x3ff] = r2; - writePages[(r29+1060)>>>12][((r29+1060)>>>2)&0x3ff] = r2; - writePages[(r29+1064)>>>12][((r29+1064)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - r31=0x64070; - pc=0x63600; - run_63600(); return; - case 0x64070: - r21 = r2 + r0; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x64094; - continue; - } - r4 = r18 + r0; - r5 = r29 + 1040; - /* Next insn is delay slot */ - r31=0x6408c; - pc=0x39800; - run_39800(); return; - case 0x6408c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x64920; - run_64800(); return; - } - case 0x64094: - addr=r29+1052; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r2 = r2 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x640b8; - continue; - } - addr=r23+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r2 = r2 | 64; - addr=r23+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x640b8: - r2 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63e18; - run_63e00(); return; - case 0x640c4: - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x64668; - run_64600(); return; - } - r7 = r0 + r0; - r4 = r0 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x639fc; - run_63800(); return; - case 0x640e0: - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x646a4; - run_64600(); return; - } - r7 = r0 + r0; - r4 = r0 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63a38; - run_63a00(); return; - case 0x640fc: - r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x64554; - run_64400(); return; - } - r18 = r29 + 1080; - r4 = r0 + 10; - case 0x64110: - if(r4 != r0) { - /* Next insn is delay slot */ - if(r4!=0) { - hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); - } - pc=0x6411c; - continue; - } - if(r4!=0) { - hi = (int)((r2 & 0xffffffffL) % (r4 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r4 & 0xffffffffL)); - } - throw new ExecutionException("Break"); - case 0x6411c: - r18 = r18 + -1; - r6 = hi; - r6 = r6 + 48; - addr=r18+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = lo; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x64110; - continue; - } - r2 = readPages[(r29+1160)>>>12][((r29+1160)>>>2)&0x3ff]; - r19 = r2 - r18; - /* Next insn is delay slot */ - pc=0x638bc; - run_63800(); return; - case 0x6414c: - /* Next insn is delay slot */ - r31=0x64154; - pc=0x3a600; - run_3a600(); return; - case 0x64154: - /* Next insn is delay slot */ - pc=0x63654; - run_63600(); return; - case 0x6415c: - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x645ac; - run_64400(); return; - } - r7 = r0 + r0; - r4 = r0 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63cd0; - run_63c00(); return; - case 0x64178: - r2 = r23 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x638b8; - run_63800(); return; - } - r2 = r0 + 48; - addr=r29+1079; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r19 = readPages[(r29+1192)>>>12][((r29+1192)>>>2)&0x3ff]; - r18 = r29 + 1079; - /* Next insn is delay slot */ - pc=0x638bc; - run_63800(); return; - case 0x6419c: - r4 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - r17 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r2 = r4 + 4; - if(r17 >= 0) { - /* Next insn is delay slot */ - pc=0x6456c; - run_64400(); return; - } - r17 = r0 - r17; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r2; - case 0x641bc: - r23 = r23 | 4; - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x637c4; - run_63600(); return; - case 0x641cc: - r6 = r0 + 43; - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x637c4; - run_63600(); return; - case 0x641dc: - r2 = r23 & 16; - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x645e8; - run_64400(); return; - } - r12 = r23 & 64; - if(r12 == r0) { - /* Next insn is delay slot */ - pc=0x645e8; - run_64400(); return; - } - r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - r4 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; - case 0x64200: - pc=0x64200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_64200() throws ExecutionException { /* 0x64200 - 0x64400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x64200: - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r5 = r5 + 4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r4&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x63700; - run_63600(); return; - case 0x64218: - r2 = 7 << 16; - r2 = r2 + 248; - writePages[(r29+1188)>>>12][((r29+1188)>>>2)&0x3ff] = r2; - r2 = r23 & 16; - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x643c8; - continue; - } - case 0x64234: - r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r5 = r5 + 4; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; - case 0x64248: - r5 = r23 & 1; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x64608; - run_64600(); return; - } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x64608; - run_64600(); return; - } - r5 = r0 + 48; - addr=r29+1157; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r29+1156; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r23 = r23 | 2; - r4 = r0 + 2; - /* Next insn is delay slot */ - pc=0x63884; - run_63800(); return; - case 0x64278: - r23 = r23 | 64; - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x637c4; - run_63600(); return; - case 0x64288: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r5 = r16 + 1; - if(r4 == r7) { - /* Next insn is delay slot */ - pc=0x648f4; - run_64800(); return; - } - r2 = r4 + -48; - r8 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - r30 = r0 + r0; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x642dc; - continue; - } - case 0x642ac: - r4 = r30 << 1; - r5 = r5 + 1; - r30 = r30 << 3; - r30 = r4 + r30; - addr=r5+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r30 = r2 + r30; - r2 = r4 + -48; - r8 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r8 != r0) { - /* Next insn is delay slot */ - pc=0x642ac; - continue; - } - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x64780; - run_64600(); return; - } - case 0x642dc: - r16 = r5 + r0; - /* Next insn is delay slot */ - pc=0x637cc; - run_63600(); return; - case 0x642e8: - r2 = r23 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x63870; - run_63800(); return; - } - r4 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - addr=r4+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r4 = r4 + 4; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r4; - r4 = r0 + r0; - /* Next insn is delay slot */ - pc=0x63884; - run_63800(); return; - case 0x64314: - r23 = r23 | 128; - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x637c4; - run_63600(); return; - case 0x64324: - r17 = r0 + r0; - r2 = r4 + -48; - case 0x6432c: - r4 = r17 << 1; - r16 = r16 + 1; - r17 = r17 << 3; - r17 = r4 + r17; - addr=r16+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r17 = r17 + r2; - r2 = r4 + -48; - r5 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x6432c; - continue; - } - /* Next insn is delay slot */ - pc=0x637cc; - run_63600(); return; - case 0x6435c: - r23 = r23 | 16; - r2 = r23 & 16; - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x64430; - run_64400(); return; - } - case 0x64370: - r2 = r23 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x64430; - run_64400(); return; - } - r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - addr=r5+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r2 = tmp; - r5 = r5 + 4; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; - case 0x64390: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x64734; - run_64600(); return; - } - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r19 = r30 + r0; - r4 = r0 + 1; - /* Next insn is delay slot */ - pc=0x63890; - run_63800(); return; - case 0x643ac: - r2 = 7 << 16; - r2 = r2 + 228; - writePages[(r29+1188)>>>12][((r29+1188)>>>2)&0x3ff] = r2; - r2 = r23 & 16; - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x64234; - continue; - } - case 0x643c8: - r2 = r23 & 64; - r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x64754; - run_64600(); return; - } - addr=r5+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r5 = r5 + 4; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x64248; - continue; - case 0x643ec: - r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r5 = r5 + 4; - addr=r29+1040; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x64400: - pc=0x64400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_64400() throws ExecutionException { /* 0x64400 - 0x64600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x64400: - r2 = r0 + 1; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; - writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r2; - r19 = r0 + 1; - r18 = r29 + 1040; - r30 = r0 + r0; - /* Next insn is delay slot */ - pc=0x638e8; - run_63800(); return; - case 0x64420: - r2 = r23 & 16; - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x64370; - run_64200(); return; - } - case 0x64430: - r4 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r4 = r4 + 4; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x64390; - run_64200(); return; - case 0x6444c: - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x6381c; - run_63800(); return; - } - r6 = r0 + 32; - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x637c4; - run_63600(); return; - case 0x64464: - r23 = r23 | 1; - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x637c4; - run_63600(); return; - case 0x64474: - r2 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r18 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r20 = r2 + 4; - if(r18 == r0) { - /* Next insn is delay slot */ - pc=0x64868; - run_64800(); return; - } - r4 = r18 + r0; - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x647f8; - run_64600(); return; - } - r5 = r0 + r0; - r6 = r30 + r0; - writePages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x644ac; - pc=0x5b400; - run_5b400(); return; - case 0x644ac: - r3 = readPages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x648bc; - run_64800(); return; - } - r19 = r2 - r18; - r2 = r30 < r19 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x64774; - run_64600(); return; - } - case 0x644c8: - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r20; - r30 = r0 + r0; - /* Next insn is delay slot */ - pc=0x638bc; - run_63800(); return; - case 0x644dc: - r4 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - r2 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r4 = r0 + 48; - addr=r29+1156; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r4 = r0 + 120; - addr=r29+1157; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r4 = 7 << 16; - r4 = r4 + 248; - r5 = r5 + 4; - writePages[(r29+1188)>>>12][((r29+1188)>>>2)&0x3ff] = r4; - r23 = r23 | 2; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; - r4 = r0 + 2; - /* Next insn is delay slot */ - pc=0x63884; - run_63800(); return; - case 0x6451c: - if(r14 != r0) { - /* Next insn is delay slot */ - pc=0x647d0; - run_64600(); return; - } - r19 = readPages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff]; - r2 = r19 < r17 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x64768; - run_64600(); return; - } - case 0x64538: - r3 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; - writePages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff] = r0; - r3 = r3 + r19; - writePages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff] = r3; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63700; - run_63600(); return; - case 0x64554: - r2 = r2 + 48; - addr=r29+1079; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r19 = readPages[(r29+1192)>>>12][((r29+1192)>>>2)&0x3ff]; - r18 = r29 + 1079; - /* Next insn is delay slot */ - pc=0x638bc; - run_63800(); return; - case 0x6456c: - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r2; - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x637c4; - run_63600(); return; - case 0x6457c: - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x647a0; - run_64600(); return; - } - r5 = r0 + 1; - addr=r29+1040; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r5; - r19 = r0 + 1; - r18 = r29 + 1040; - r30 = r0 + r0; - /* Next insn is delay slot */ - pc=0x638e8; - run_63800(); return; - case 0x645ac: - r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r6 = r29 + 1144; - writePages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff] = r15; - /* Next insn is delay slot */ - r31=0x645c4; - pc=0x63200; - run_63200(); return; - case 0x645c4: - r15 = readPages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63df8; - run_63c00(); return; - } - r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r4 = r7 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63cd0; - run_63c00(); return; - case 0x645e8: - r5 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - r4 = readPages[(r29+1180)>>>12][((r29+1180)>>>2)&0x3ff]; - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r5 = r5 + 4; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r4; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; - case 0x64600: - pc=0x64600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_64600() throws ExecutionException { /* 0x64600 - 0x64800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x64600: - /* Next insn is delay slot */ - pc=0x63700; - run_63600(); return; - case 0x64608: - r4 = r0 + 2; - /* Next insn is delay slot */ - pc=0x63884; - run_63800(); return; - case 0x64614: - r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r6 = r29 + 1144; - /* Next insn is delay slot */ - r31=0x64628; - pc=0x63200; - run_63200(); return; - case 0x64628: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63df8; - run_63c00(); return; - } - r14 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63b3c; - run_63a00(); return; - case 0x64640: - r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r6 = r29 + 1144; - /* Next insn is delay slot */ - r31=0x64654; - pc=0x63200; - run_63200(); return; - case 0x64654: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63df8; - run_63c00(); return; - } - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63800; - run_63800(); return; - case 0x64668: - r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r6 = r29 + 1144; - writePages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff] = r15; - /* Next insn is delay slot */ - r31=0x64680; - pc=0x63200; - run_63200(); return; - case 0x64680: - r15 = readPages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63df8; - run_63c00(); return; - } - r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r4 = r7 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x639fc; - run_63800(); return; - case 0x646a4: - r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r6 = r29 + 1144; - /* Next insn is delay slot */ - r31=0x646b8; - pc=0x63200; - run_63200(); return; - case 0x646b8: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63df8; - run_63c00(); return; - } - r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r4 = r7 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63a38; - run_63a00(); return; - case 0x646d8: - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x64820; - run_64800(); return; - } - r7 = r0 + r0; - r4 = r0 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63a44; - run_63a00(); return; - case 0x646f4: - r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r6 = r29 + 1144; - /* Next insn is delay slot */ - r31=0x64708; - pc=0x63200; - run_63200(); return; - case 0x64708: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63df8; - run_63c00(); return; - } - r4 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r4 = r4 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63b0c; - run_63a00(); return; - case 0x64728: - r17 = r16 + r0; - /* Next insn is delay slot */ - pc=0x63798; - run_63600(); return; - case 0x64734: - r4 = r0 + 45; - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 - r2; - r19 = r30 + r0; - r5 = r0 + 45; - r4 = r0 + 1; - /* Next insn is delay slot */ - pc=0x63890; - run_63800(); return; - case 0x64754: - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r5 = r5 + 4; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x64248; - run_64200(); return; - case 0x64768: - r19 = r17 + r0; - /* Next insn is delay slot */ - pc=0x64538; - run_64400(); return; - case 0x64774: - r19 = r30 + r0; - /* Next insn is delay slot */ - pc=0x644c8; - run_64400(); return; - case 0x64780: - r30 = r0 + -1; - r16 = r5 + r0; - /* Next insn is delay slot */ - pc=0x637cc; - run_63600(); return; - case 0x64790: - r2 = 7 << 16; - r8 = r2 + 4276; - /* Next insn is delay slot */ - pc=0x63ae4; - run_63a00(); return; - case 0x647a0: - r2 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r18 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r23 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x63e00; - run_63e00(); return; - } - r4 = r18 + r0; - r5 = r23 + r0; - r6 = r29 + 1144; - /* Next insn is delay slot */ - r31=0x647c8; - pc=0x63200; - run_63200(); return; - case 0x647c8: - /* Next insn is delay slot */ - pc=0x63e00; - run_63e00(); return; - case 0x647d0: - r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r6 = r29 + 1144; - /* Next insn is delay slot */ - r31=0x647e4; - pc=0x63200; - run_63200(); return; - case 0x647e4: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63df8; - run_63c00(); return; - } - r14 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x63c0c; - run_63c00(); return; - case 0x647f8: - writePages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - r31=0x64804; - pc=0x10268; - run_10200(); return; - case 0x64800: - pc=0x64800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_64800() throws ExecutionException { /* 0x64800 - 0x64a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x64800: - case 0x64804: - r19 = r2 + r0; - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r20; - r30 = r0 + r0; - r3 = readPages[(r29+1204)>>>12][((r29+1204)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x638bc; - run_63800(); return; - case 0x64820: - r4 = readPages[(r29+1176)>>>12][((r29+1176)>>>2)&0x3ff]; - r5 = readPages[(r29+1172)>>>12][((r29+1172)>>>2)&0x3ff]; - r6 = r29 + 1144; - /* Next insn is delay slot */ - r31=0x64834; - pc=0x63200; - run_63200(); return; - case 0x64834: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x63df8; - run_63c00(); return; - } - r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - r5 = readPages[(r29+1152)>>>12][((r29+1152)>>>2)&0x3ff]; - r4 = r7 + 1; - r3 = r21 + r0; - /* Next insn is delay slot */ - pc=0x63a44; - run_63a00(); return; - case 0x64854: - r7 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - writePages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff] = r22; - r7 = r7 + 1; - /* Next insn is delay slot */ - pc=0x639c4; - run_63800(); return; - case 0x64868: - r2 = (r30&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; - r13 = r30 + r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6487c; - continue; - } - r13 = r0 + 6; - case 0x6487c: - r19 = r13 + r0; - r2 = r13 + r0; - if(r13 < 0) { - /* Next insn is delay slot */ - pc=0x648e8; - continue; - } - case 0x6488c: - r10 = 7 << 16; - writePages[(r29+1168)>>>12][((r29+1168)>>>2)&0x3ff] = r2; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r20; - r18 = r10 + 268; - r30 = r0 + r0; - /* Next insn is delay slot */ - pc=0x638e8; - run_63800(); return; - case 0x648a8: - r5 = readPages[(r29+1148)>>>12][((r29+1148)>>>2)&0x3ff]; - writePages[(r29+1184)>>>12][((r29+1184)>>>2)&0x3ff] = r22; - r5 = r5 + 1; - /* Next insn is delay slot */ - pc=0x63be8; - run_63a00(); return; - case 0x648bc: - r19 = r30 + r0; - addr=r29+1158; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r20; - r30 = r0 + r0; - /* Next insn is delay slot */ - pc=0x638bc; - run_63800(); return; - case 0x648d4: - r2 = 7 << 16; - r6 = r4 + r0; - r8 = r2 + 4276; - /* Next insn is delay slot */ - pc=0x63f64; - run_63e00(); return; - case 0x648e8: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x6488c; - continue; - case 0x648f4: - r4 = readPages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff]; - r16 = r5 + r0; - r30 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r2 = r4 + 4; - if(r30 >= 0) { - /* Next insn is delay slot */ - pc=0x6456c; - run_64400(); return; - } - writePages[(r29+1260)>>>12][((r29+1260)>>>2)&0x3ff] = r2; - r30 = r0 + -1; - r2 = r16 + r0; - /* Next insn is delay slot */ - pc=0x637c4; - run_63600(); return; - case 0x64920: - r21 = r0 + -1; - /* Next insn is delay slot */ - pc=0x64094; - run_64000(); return; - case 0x64a00: - pc=0x64a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_64a00() throws ExecutionException { /* 0x64a00 - 0x64c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x64a00: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x63600; - run_63600(); return; - case 0x64c00: - pc=0x64c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_64c00() throws ExecutionException { /* 0x64c00 - 0x64e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x64c00: - r29 = r29 + -136; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r17; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r16; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r31; - r17 = r4 + r0; - r16 = r6 + r0; - if(r6 < 0) { - /* Next insn is delay slot */ - pc=0x64ce4; - continue; - } - r2 = r0 + 520; - addr=r29+28; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r5; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x64c9c; - continue; - } - r2 = r0 + r0; - r6 = r7 + r0; - r7 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r4 = r17 + r0; - r2 = r0 + -1; - r5 = r29 + 16; - addr=r29+30; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x64c64; - pc=0x43800; - run_43800(); return; - case 0x64c64: - r3 = r2 < -1 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x64cd4; - continue; - } - case 0x64c70: - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x64c84; - continue; - } - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x64c84: - r31 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r17 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - r16 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r29 = r29 + 136; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x64c9c: - r2 = r6 + -1; - r6 = r7 + r0; - r7 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r4 = r17 + r0; - r2 = r0 + -1; - r5 = r29 + 16; - addr=r29+30; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x64cc8; - pc=0x43800; - run_43800(); return; - case 0x64cc8: - r3 = r2 < -1 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x64c70; - continue; - } - case 0x64cd4: - r3 = r0 + 139; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x64c70; - continue; - case 0x64ce4: - r2 = r0 + 139; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x64c84; - continue; - case 0x64e00: - pc=0x64e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_64e00() throws ExecutionException { /* 0x64e00 - 0x65000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x64e00: - r29 = r29 + -32; - r8 = r4 + r0; - r3 = r5 + r0; - r2 = r6 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r5 = r8 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r7; - r6 = r3 + r0; - r7 = r2 + r0; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x64e30; - pc=0x64c00; - run_64c00(); return; - case 0x64e30: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x65000: - pc=0x65000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_65000() throws ExecutionException { /* 0x65000 - 0x65200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x65000: - r29 = r29 + -128; - r2 = r0 + 520; - addr=r29+28; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = 32767 << 16; - r2 = r2 | 65535; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r5; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r2; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - r5 = r29 + 16; - r2 = r0 + -1; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r31; - addr=r29+30; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - r31=0x6503c; - pc=0x43800; - run_43800(); return; - case 0x6503c: - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r31 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - r29 = r29 + 128; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x65200: - pc=0x65200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_65200() throws ExecutionException { /* 0x65200 - 0x65400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x65200: - r3 = r4 + r0; - r2 = r5 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r7 = r6 + r0; - r5 = r3 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x65000; - run_65000(); return; - case 0x65400: - pc=0x65400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_65400() throws ExecutionException { /* 0x65400 - 0x65600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x65400: + for (;;) { + switch (pc) { + case 0x53c00: r29 = r29 + -88; r5 = r29 + 16; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; - /* Next insn is delay slot */ - r31=0x65414; - pc=0x62e00; - run_62e00(); return; - case 0x65414: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x65468; + writePages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff] = r31; + /* Next insn is delay slot */ + r31 = 0x53c14; + pc = 0x53600; + run_53600(); + return; + case 0x53c14: + if (r2 < 0) { + /* Next insn is delay slot */ + pc = 0x53c68; continue; } - r3 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; + r3 = readPages[(r29 + 20) >>> 12][((r29 + 20) >>> 2) & 0x3ff]; r2 = r0 + 8192; r3 = r3 & 61440; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x65454; + if (r3 == r2) { + /* Next insn is delay slot */ + pc = 0x53c54; continue; } - /* Next insn is delay slot */ - r31=0x65438; - pc=0x38c00; - run_38c00(); return; - case 0x65438: - r3 = r0 + 25; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r2 = r0 + r0; - case 0x65444: - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x53c38; + pc = 0x40000; + run_40000(); return; - case 0x65454: - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; + case 0x53c38: + r3 = r0 + 25; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; + r2 = r0 + r0; + case 0x53c44: + r31 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; + r29 = r29 + 88; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x53c54: + r31 = readPages[(r29 + 84) >>> 12][((r29 + 84) >>> 2) & 0x3ff]; r2 = r0 + 1; r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x65468: - /* Next insn is delay slot */ - r31=0x65470; - pc=0x38c00; - run_38c00(); return; - case 0x65470: + case 0x53c68: + /* Next insn is delay slot */ + r31 = 0x53c70; + pc = 0x40000; + run_40000(); + return; + case 0x53c70: r3 = r0 + 9; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r3; r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x65444; + /* Next insn is delay slot */ + pc = 0x53c44; continue; - case 0x65600: - pc=0x65600; + case 0x53e00: + pc = 0x53e00; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_65600() throws ExecutionException { /* 0x65600 - 0x65800 */ + + private final void run_53e00() throws ExecutionException { /* 0x53e00 - 0x54000 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x65600: - { long hilo = (r5) * r6; hi = (int) (hilo >>> 32); lo = (int) hilo; } + for (;;) { + switch (pc) { + case 0x53e00: { + long hilo = (long) (r5) * ((long) r6); + hi = (int) (hilo >>> 32); + lo = (int) hilo; + } r29 = r29 + -48; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r17; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff] = r16; r17 = r4 + r0; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r19; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r19; r5 = lo; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - r31=0x65634; - pc=0x3f600; - run_3f600(); return; - case 0x65634: - r2 = 7 << 16; - r18 = readPages[(r2+11112)>>>12][((r2+11112)>>>2)&0x3ff]; - r5 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r5; + /* Next insn is delay slot */ + r31 = 0x53e34; + pc = 0x45600; + run_45600(); + return; + case 0x53e34: + r2 = 6 << 16; + r18 = readPages[(r2 + -16456) >>> 12][((r2 + -16456) >>> 2) & 0x3ff]; + r5 = readPages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff]; r4 = r17 + r0; - r20 = readPages[(r18+4)>>>12][((r18+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x65650; - pc=0x3ec00; - run_3ec00(); return; - case 0x65650: + r20 = readPages[(r18 + 4) >>> 12][((r18 + 4) >>> 2) & 0x3ff]; + /* Next insn is delay slot */ + r31 = 0x53e50; + pc = 0x44a00; + run_44a00(); + return; + case 0x53e50: r16 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6577c; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x53f7c; continue; } - r19 = readPages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff]; + r19 = readPages[(r2 + -4) >>> 12][((r2 + -4) >>> 2) & 0x3ff]; r3 = r16 + -8; r2 = r0 + -4; r19 = r19 & r2; - if(r18 == r3) { - /* Next insn is delay slot */ - pc=0x6574c; + if (r18 == r3) { + /* Next insn is delay slot */ + pc = 0x53f4c; continue; } - case 0x65674: + case 0x53e74: r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x65680; - pc=0x3f800; - run_3f800(); return; - case 0x65680: - r6 = r19 + -4; - r2 = (r6&0xffffffffL) < (37&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x65708; - continue; - } - r2 = (r6&0xffffffffL) < (20&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x656d4; - continue; - } - r2 = r16 + r0; - case 0x656a0: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - writePages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff] = r0; - writePages[(r2+8)>>>12][((r2+8)>>>2)&0x3ff] = r0; - r2 = r16 + r0; - case 0x656b0: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x53e80; + pc = 0x45800; + run_45800(); return; - case 0x656d4: - r2 = (r6&0xffffffffL) < (28&0xffffffffL) ? 1 : 0; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r0; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x65740; + case 0x53e80: + r6 = r19 + -4; + r2 = (r6 & 0xffffffffL) < (37 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x53f08; + continue; + } + r2 = (r6 & 0xffffffffL) < (20 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x53ed4; + continue; + } + r2 = r16 + r0; + case 0x53ea0: + writePages[(r2 + 0) >>> 12][((r2 + 0) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 4) >>> 12][((r2 + 4) >>> 2) & 0x3ff] = r0; + writePages[(r2 + 8) >>> 12][((r2 + 8) >>> 2) & 0x3ff] = r0; + r2 = r16 + r0; + case 0x53eb0: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x53ed4: + r2 = (r6 & 0xffffffffL) < (28 & 0xffffffffL) ? 1 : 0; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 4) >>> 12][((r16 + 4) >>> 2) & 0x3ff] = r0; + if (r2 != r0) { + /* Next insn is delay slot */ + pc = 0x53f40; continue; } r2 = r0 + 36; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; - writePages[(r16+12)>>>12][((r16+12)>>>2)&0x3ff] = r0; - if(r6 == r2) { - /* Next insn is delay slot */ - pc=0x65768; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 12) >>> 12][((r16 + 12) >>> 2) & 0x3ff] = r0; + if (r6 == r2) { + /* Next insn is delay slot */ + pc = 0x53f68; continue; } r2 = r16 + 16; - /* Next insn is delay slot */ - pc=0x656a0; + /* Next insn is delay slot */ + pc = 0x53ea0; continue; - case 0x65708: + case 0x53f08: r4 = r16 + r0; r5 = r0 + r0; - /* Next insn is delay slot */ - r31=0x65718; - pc=0x48fec; - run_48e00(); return; - case 0x65718: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r2 = r16 + r0; - r20 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r19 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r18 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r17 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + r31 = 0x53f18; + pc = 0x4d7f0; + run_4d600(); return; - case 0x65740: + case 0x53f18: + r31 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r2 = r16 + r0; + r20 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 24) >>> 12][((r29 + 24) >>> 2) & 0x3ff]; + r29 = r29 + 48; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x53f40: r2 = r16 + 8; - /* Next insn is delay slot */ - pc=0x656a0; + /* Next insn is delay slot */ + pc = 0x53ea0; continue; - case 0x6574c: + case 0x53f4c: r2 = r20 & r2; r3 = ((r2 & 0xffffffffL) < (r19 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x65674; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x53e74; continue; } r19 = r2 + r0; - /* Next insn is delay slot */ - pc=0x65674; + /* Next insn is delay slot */ + pc = 0x53e74; continue; - case 0x65768: - writePages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff] = r0; + case 0x53f68: + writePages[(r16 + 16) >>> 12][((r16 + 16) >>> 2) & 0x3ff] = r0; r2 = r16 + 24; - writePages[(r16+20)>>>12][((r16+20)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x656a0; + writePages[(r16 + 20) >>> 12][((r16 + 20) >>> 2) & 0x3ff] = r0; + /* Next insn is delay slot */ + pc = 0x53ea0; continue; - case 0x6577c: + case 0x53f7c: r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x65788; - pc=0x3f800; - run_3f800(); return; - case 0x65788: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x656b0; - continue; - case 0x65800: - pc=0x65800; + /* Next insn is delay slot */ + r31 = 0x53f88; + pc = 0x45800; + run_45800(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + case 0x53f88: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = 0x53eb0; + continue; + case 0x54000: + pc = 0x54000; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private final void run_65800() throws ExecutionException { /* 0x65800 - 0x65a00 */ + + private final void run_54000() throws ExecutionException { /* 0x54000 - 0x54200 */ int addr, tmp; - for(;;) { - switch(pc) { - case 0x65800: - addr=r6+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ + for (;;) { + switch (pc) { + case 0x54000: + addr = r6 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; + if ((tmp & 0x8000) != 0) + tmp |= 0xffff0000; /* sign extend */ r2 = tmp; r29 = r29 + -56; r3 = r2 & 8192; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r21; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r19; + writePages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r31; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r21; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r20; + writePages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff] = r17; r19 = r4 + r0; r18 = r5 + r0; r16 = r6 + r0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x65854; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x54054; continue; } r2 = r2 | 8192; - addr=r6+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r6+100)>>>12][((r6+100)>>>2)&0x3ff]; + addr = r6 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r6 + 100) >>> 12][((r6 + 100) >>> 2) & 0x3ff]; r2 = r2 | 8192; - writePages[(r6+100)>>>12][((r6+100)>>>2)&0x3ff] = r2; - case 0x65854: - /* Next insn is delay slot */ - r31=0x6585c; - pc=0x5a800; - run_5a800(); return; - case 0x6585c: + writePages[(r6 + 100) >>> 12][((r6 + 100) >>> 2) & 0x3ff] = r2; + case 0x54054: + /* Next insn is delay slot */ + r31 = 0x5405c; + pc = 0x51000; + run_51000(); + return; + case 0x5405c: r3 = r0 + 1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x659c4; + if (r2 == r3) { + /* Next insn is delay slot */ + pc = 0x541c4; continue; } - case 0x65868: + case 0x54068: r4 = r19 + r0; r5 = r29 + 16; r6 = r18 + r0; r7 = r16 + 92; - /* Next insn is delay slot */ - r31=0x65880; - pc=0x6aa00; - run_6aa00(); return; - case 0x65880: + /* Next insn is delay slot */ + r31 = 0x54080; + pc = 0x54400; + run_54400(); + return; + case 0x54080: r20 = r2 + r0; r2 = r0 + -1; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x65958; + if (r20 == r2) { + /* Next insn is delay slot */ + pc = 0x54158; continue; } - if(r20 == r0) { - /* Next insn is delay slot */ - pc=0x6594c; + if (r20 == r0) { + /* Next insn is delay slot */ + pc = 0x5414c; continue; } - addr=r29+16; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r29 + 16; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r5 = tmp; - case 0x6589c: + case 0x5409c: r17 = r0 + r0; r21 = r0 + 10; - /* Next insn is delay slot */ - pc=0x658e4; + /* Next insn is delay slot */ + pc = 0x540e4; continue; - case 0x658ac: - r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; + case 0x540ac: + r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r3 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; r3 = r3 + 1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; - case 0x658c8: + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r3; + case 0x540c8: r17 = r17 + 1; r3 = ((r17 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x6594c; + if (r3 == r0) { + /* Next insn is delay slot */ + pc = 0x5414c; continue; } - case 0x658d8: + case 0x540d8: r2 = r29 + 16; r3 = r2 + r17; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ + addr = r3 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; + if ((tmp & 0x80) != 0) + tmp |= 0xffffff00; /* sign extend */ r5 = tmp; - case 0x658e4: - r3 = readPages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff]; + case 0x540e4: + r3 = readPages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff]; r3 = r3 + -1; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r3; - if(r3 >= 0) { - /* Next insn is delay slot */ - pc=0x658ac; + writePages[(r16 + 8) >>> 12][((r16 + 8) >>> 2) & 0x3ff] = r3; + if (r3 >= 0) { + /* Next insn is delay slot */ + pc = 0x540ac; continue; } - r2 = readPages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff]; + r2 = readPages[(r16 + 24) >>> 12][((r16 + 24) >>> 2) & 0x3ff]; r3 = r3 < r2 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x65994; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x54194; continue; } - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = readPages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff]; + addr = r2 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 3) << 3)) & 0xff; r3 = tmp; - if(r3 == r21) { - /* Next insn is delay slot */ - pc=0x659ec; + if (r3 == r21) { + /* Next insn is delay slot */ + pc = 0x541ec; continue; } r17 = r17 + 1; r2 = r2 + 1; r3 = ((r17 & 0xffffffffL) < (r20 & 0xffffffffL)) ? 1 : 0; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x658d8; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + if (r3 != r0) { + /* Next insn is delay slot */ + pc = 0x540d8; continue; } - case 0x6594c: + case 0x5414c: r2 = r18 + r0; - /* Next insn is delay slot */ - pc=0x6596c; + /* Next insn is delay slot */ + pc = 0x5416c; continue; - case 0x65958: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; + case 0x54158: + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp >>> (((~addr) & 2) << 3)) & 0xffff; r2 = tmp; r2 = r2 | 64; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r16 + 12; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & (0xffff << ((addr & 2) << 3))) | ((r2 & 0xffff) << (((~addr) & 2) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r2 = r0 + -1; - case 0x6596c: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r21 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r20 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; + case 0x5416c: + r31 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r21 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r20 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + r19 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 36) >>> 12][((r29 + 36) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 32) >>> 12][((r29 + 32) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 28) >>> 12][((r29 + 28) >>> 2) & 0x3ff]; r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; + /* Next insn is delay slot */ + pc = r31; return; - case 0x65994: + case 0x54194: r4 = r19 + r0; r5 = r5 & 255; r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x659a8; - pc=0x48200; - run_48200(); return; - case 0x659a8: + /* Next insn is delay slot */ + r31 = 0x541a8; + pc = 0x4d200; + run_4d200(); + return; + case 0x541a8: r2 = r2 + 1; - r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - case 0x659b0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x658c8; + r2 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + case 0x541b0: + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x540c8; continue; } r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x6596c; + /* Next insn is delay slot */ + pc = 0x5416c; continue; - case 0x659c4: + case 0x541c4: r2 = r18 + -1; - r2 = (r2&0xffffffffL) < (255&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x65868; + r2 = (r2 & 0xffffffffL) < (255 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x54068; continue; } r5 = r18 << 24; r5 = r5 >> 24; - addr=r29+16; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; + addr = r29 + 16; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r5 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; r20 = r0 + 1; - /* Next insn is delay slot */ - pc=0x6589c; + /* Next insn is delay slot */ + pc = 0x5409c; continue; - case 0x659ec: + case 0x541ec: r4 = r19 + r0; r5 = r0 + 10; r6 = r16 + r0; - /* Next insn is delay slot */ - r31=0x65a00; - pc=0x48200; - run_48200(); return; - case 0x65a00: - pc=0x65a00; + /* Next insn is delay slot */ + r31 = 0x54200; + pc = 0x4d200; + run_4d200(); return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_65a00() throws ExecutionException { /* 0x65a00 - 0x65c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x65a00: - r2 = r2 + 1; - r2 = (r2&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - /* Next insn is delay slot */ - pc=0x659b0; - run_65800(); return; - case 0x65c00: - pc=0x65c00; + case 0x54200: + pc = 0x54200; return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_65c00() throws ExecutionException { /* 0x65c00 - 0x65e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x65c00: - r29 = r29 + -32; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - r16 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - r6 = r5 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x65c5c; - continue; - } - r3 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x65c44; - continue; - } - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - r31=0x65c3c; - pc=0x3a600; - run_3a600(); return; - case 0x65c3c: - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - case 0x65c44: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r5 = r16 + r0; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x65800; - run_65800(); return; - case 0x65c5c: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r5 = r16 + r0; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r4 = r0 + r0; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x65800; - run_65800(); return; - case 0x65e00: - pc=0x65e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_65e00() throws ExecutionException { /* 0x65e00 - 0x66000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x65e00: - r2 = (r4&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x65e30; - continue; - } - r2 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - r4 = r2 + r4; - addr=r4+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r2 & 8; - r2 = r2 & 255; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x65e30: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x66000: - pc=0x66000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_66000() throws ExecutionException { /* 0x66000 - 0x66200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x66000: - r29 = r29 + -56; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r18; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r17; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - r16 = r4 + r0; - r17 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r18 = readPages[(r28+-30952)>>>12][((r28+-30952)>>>2)&0x3ff]; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x66094; - continue; - } - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r5; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r6; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x6603c; - pc=0x5a600; - run_5a600(); return; - case 0x6603c: - r5 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r6 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r7 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - r4 = r16 + r0; - /* Next insn is delay slot */ - pc=r18; - r31=0x6605c; - return; - case 0x6605c: - r3 = r0 + -1; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x66078; - continue; - } - r2 = r0 + 138; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r0; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - case 0x66078: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r18 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r17 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x66094: - /* Next insn is delay slot */ - r31=0x6609c; - pc=0x5a600; - run_5a600(); return; - case 0x6609c: - r6 = 7 << 16; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - r4 = r16 + r0; - r5 = r0 + r0; - r6 = r6 + -12264; - r7 = r0 + 1; - /* Next insn is delay slot */ - pc=r18; - r31=0x660c0; - return; - case 0x660c0: - /* Next insn is delay slot */ - pc=0x6605c; - continue; - case 0x66200: - pc=0x66200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_66200() throws ExecutionException { /* 0x66200 - 0x66400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x66200: - r29 = r29 + -56; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r17; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r21; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r20; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r19; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r18; - r16 = r5 + r0; - r17 = r7 + r0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x662b0; - continue; - } - r21 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r19 = r4 + r0; - r18 = r6 + r0; - r20 = readPages[(r28+-30952)>>>12][((r28+-30952)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x66248; - pc=0x5a600; - run_5a600(); return; - case 0x66248: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - r4 = r21 + r0; - r5 = r19 + r0; - r6 = r16 + r0; - r7 = r18 + r0; - /* Next insn is delay slot */ - pc=r20; - r31=0x66268; - return; - case 0x66268: - r3 = r0 + -1; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x66288; - continue; - } - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r3 = r0 + 138; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r0; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r2 = r0 + -1; - case 0x66288: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r21 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r20 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r19 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r18 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r17 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r16 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x662b0: - r18 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r16 = readPages[(r28+-30952)>>>12][((r28+-30952)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x662c0; - pc=0x5a600; - run_5a600(); return; - case 0x662c0: - r6 = 7 << 16; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - r4 = r18 + r0; - r5 = r0 + r0; - r6 = r6 + -12264; - r7 = r0 + 1; - /* Next insn is delay slot */ - pc=r16; - r31=0x662e4; - return; - case 0x662e4: - /* Next insn is delay slot */ - pc=0x66268; - continue; - case 0x66400: - pc=0x66400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_66400() throws ExecutionException { /* 0x66400 - 0x66600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x66400: - r29 = r29 + -8; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x66440; - continue; - } - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x6644c; - continue; - } - case 0x66414: - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x6645c; - continue; - } - addr=r6+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r2; - addr=r6+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = ((r0 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - case 0x66434: - r29 = r29 + 8; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x66440: - r5 = r29 + r0; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x66414; - continue; - } - case 0x6644c: - r2 = r0 + r0; - r29 = r29 + 8; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6645c: - r2 = r0 + -2; - /* Next insn is delay slot */ - pc=0x66434; - continue; - case 0x66600: - pc=0x66600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_66600() throws ExecutionException { /* 0x66600 - 0x66800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x66600: - r29 = r29 + -48; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r4; - r16 = readPages[(r28+-30952)>>>12][((r28+-30952)>>>2)&0x3ff]; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r5; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r6; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x66628; - pc=0x5a600; - run_5a600(); return; - case 0x66628: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r2 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r5 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r6 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r7 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=r16; - r31=0x6664c; - return; - case 0x6664c: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x66800: - pc=0x66800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_66800() throws ExecutionException { /* 0x66800 - 0x66a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x66800: - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r8 = tmp; - r2 = r0 + 94; - if(r8 == r2) { - /* Next insn is delay slot */ - pc=0x668e8; - continue; - } - r2 = r5 + 1; - r7 = r0 + r0; - r9 = r0 + r0; - case 0x6681c: - r3 = r0 + r0; - r6 = r0 + 256; - case 0x66824: - r5 = r4 + r3; - r3 = r3 + 1; - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r7&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r3 != r6) { - /* Next insn is delay slot */ - pc=0x66824; - continue; - } - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x66890; - continue; - } - r5 = r0 + 1; - r5 = r5 - r9; - r10 = r0 + 45; - r9 = r0 + 93; - case 0x66850: - r3 = r4 + r8; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x66858: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r7 = r2 + 1; - if(r3 == r10) { - /* Next insn is delay slot */ - pc=0x668a8; - continue; - } - if(r3 == r9) { - /* Next insn is delay slot */ - pc=0x6689c; - continue; - } - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x66888; - continue; - } - r8 = r3 + r0; - r2 = r7 + r0; - /* Next insn is delay slot */ - pc=0x66850; - continue; - case 0x66888: - /* Next insn is delay slot */ - pc=r31; - return; - case 0x66890: - r2 = r2 + -1; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6689c: - r2 = r7 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x668a8: - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r6 = tmp; - if(r6 == r9) { - /* Next insn is delay slot */ - pc=0x66900; - continue; - } - r3 = r6 < r8 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x66900; - continue; - } - r2 = r2 + 2; - case 0x668c8: - r8 = r8 + 1; - r3 = r4 + r8; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r5&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = r8 < r6 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x668c8; - continue; - } - /* Next insn is delay slot */ - pc=0x66858; - continue; - case 0x668e8: - r2 = r5 + 2; - addr=r5+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r8 = tmp; - r7 = r0 + 1; - r9 = r0 + 1; - /* Next insn is delay slot */ - pc=0x6681c; - continue; - case 0x66900: - r8 = r0 + 45; - r2 = r7 + r0; - /* Next insn is delay slot */ - pc=0x66850; - continue; - case 0x66a00: - pc=0x66a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_66a00() throws ExecutionException { /* 0x66a00 - 0x66c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x66a00: - f0 = readPages[(r28+-30948)>>>12][((r28+-30948)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x66c00: - pc=0x66c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_66c00() throws ExecutionException { /* 0x66c00 - 0x66e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x66c00: - r29 = r29 + -216; - writePages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff] = r22; - writePages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff] = r18; - writePages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff] = r16; - writePages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff] = r31; - writePages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff] = r30; - writePages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff] = r23; - writePages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff] = r21; - writePages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff] = r20; - writePages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff] = r19; - writePages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff] = r17; - writePages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff] = f30; - writePages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff] = f31; - writePages[(r29+204)>>>12][((r29+204)>>>2)&0x3ff] = f28; - writePages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff] = f29; - writePages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff] = f26; - writePages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff] = f27; - writePages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff] = f24; - writePages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff] = f25; - writePages[(r29+180)>>>12][((r29+180)>>>2)&0x3ff] = f22; - writePages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff] = f23; - writePages[(r29+172)>>>12][((r29+172)>>>2)&0x3ff] = f20; - writePages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff] = f21; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r5; - r16 = r5 + r0; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - r18 = r4 + r0; - r2 = r21 & 255; - r4 = 7 << 16; - r3 = (r2&0xffffffffL) < (46&0xffffffffL) ? 1 : 0; - r22 = r5 + r0; - writePages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff] = r6; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r0; - r4 = r4 + 4324; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x67000; - run_67000(); return; - } - case 0x66c94: - r2 = r2 << 2; - r2 = r4 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x66cac: - r7 = r0 + r0; - r3 = r0 + r0; - r9 = r0 + 1; - case 0x66cb8: - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x67160; - run_67000(); return; - } - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x67160; - run_67000(); return; - } - case 0x66cc8: - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r0; - case 0x66cd8: - r3 = readPages[(r29+224)>>>12][((r29+224)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x66cf4; - continue; - } - r2 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - case 0x66cf4: - r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x67074; - run_67000(); return; - } - r3 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r2 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - case 0x66d0c: - f30 = readPages[(r29+212)>>>12][((r29+212)>>>2)&0x3ff]; - f28 = readPages[(r29+204)>>>12][((r29+204)>>>2)&0x3ff]; - f26 = readPages[(r29+196)>>>12][((r29+196)>>>2)&0x3ff]; - f24 = readPages[(r29+188)>>>12][((r29+188)>>>2)&0x3ff]; - f22 = readPages[(r29+180)>>>12][((r29+180)>>>2)&0x3ff]; - f20 = readPages[(r29+172)>>>12][((r29+172)>>>2)&0x3ff]; - r31 = readPages[(r29+164)>>>12][((r29+164)>>>2)&0x3ff]; - f0 = r3; - r30 = readPages[(r29+160)>>>12][((r29+160)>>>2)&0x3ff]; - r23 = readPages[(r29+156)>>>12][((r29+156)>>>2)&0x3ff]; - r22 = readPages[(r29+152)>>>12][((r29+152)>>>2)&0x3ff]; - r21 = readPages[(r29+148)>>>12][((r29+148)>>>2)&0x3ff]; - r20 = readPages[(r29+144)>>>12][((r29+144)>>>2)&0x3ff]; - r19 = readPages[(r29+140)>>>12][((r29+140)>>>2)&0x3ff]; - r18 = readPages[(r29+136)>>>12][((r29+136)>>>2)&0x3ff]; - r17 = readPages[(r29+132)>>>12][((r29+132)>>>2)&0x3ff]; - r16 = readPages[(r29+128)>>>12][((r29+128)>>>2)&0x3ff]; - f31 = readPages[(r29+208)>>>12][((r29+208)>>>2)&0x3ff]; - f29 = readPages[(r29+200)>>>12][((r29+200)>>>2)&0x3ff]; - f27 = readPages[(r29+192)>>>12][((r29+192)>>>2)&0x3ff]; - f25 = readPages[(r29+184)>>>12][((r29+184)>>>2)&0x3ff]; - f23 = readPages[(r29+176)>>>12][((r29+176)>>>2)&0x3ff]; - f21 = readPages[(r29+168)>>>12][((r29+168)>>>2)&0x3ff]; - f1 = r2; - r29 = r29 + 216; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x66d78: - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r0; - case 0x66d7c: - r2 = r16 + 1; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - addr=r16+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x66cc8; - continue; - } - r16 = r2 + r0; - r2 = r0 + 48; - if(r21 == r2) { - /* Next insn is delay slot */ - pc=0x67010; - run_67000(); return; - } - case 0x66da4: - r19 = r0 + r0; - case 0x66da8: - r2 = r21 + -48; - r2 = r2 & 255; - r2 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x68294; - run_68200(); return; - } - r2 = r16 + 1; - r30 = r0 + r0; - r23 = r0 + r0; - r20 = r0 + r0; - /* Next insn is delay slot */ - pc=0x66e10; - run_66e00(); return; - case 0x66dd4: - r3 = r23 << 1; - r23 = r23 << 3; - r23 = r3 + r23; - r21 = r23 + r21; - r23 = r21 + -48; - case 0x66de8: - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - r17 = r2 + r0; - r3 = r21 + -48; - r3 = r3 & 255; - r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - case 0x66e00: - pc=0x66e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_66e00() throws ExecutionException { /* 0x66e00 - 0x67000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x66e00: - r20 = r20 + 1; - r2 = r2 + 1; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x66e64; - continue; - } - case 0x66e10: - r3 = r20 < 16 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x66de8; - run_66c00(); return; - } - r3 = r20 < 9 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x66dd4; - run_66c00(); return; - } - r3 = r30 << 1; - r30 = r30 << 3; - r30 = r3 + r30; - r21 = r30 + r21; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - r30 = r21 + -48; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - r17 = r2 + r0; - r3 = r21 + -48; - r3 = r3 & 255; - r3 = (r3&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - r20 = r20 + 1; - r2 = r2 + 1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x66e10; - continue; - } - case 0x66e64: - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x66e70; - pc=0x5ae00; - run_5ae00(); return; - case 0x66e70: - r5 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r18 + r0; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - r31=0x66e84; - pc=0x5ae00; - run_5ae00(); return; - case 0x66e84: - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x66e90; - pc=0x10268; - run_10200(); return; - case 0x66e90: - r5 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - r4 = r17 + r0; - r6 = r2 + r0; - /* Next insn is delay slot */ - r31=0x66ea4; - pc=0x43000; - run_43000(); return; - case 0x66ea4: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x672e4; - run_67200(); return; - } - r7 = r20 + r0; - r5 = r0 + r0; - r3 = r0 + r0; - r9 = r0 + r0; - case 0x66ebc: - r4 = r0 + -33; - r4 = r21 & r4; - r2 = r0 + 69; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x67158; - run_67000(); return; - } - case 0x66ed0: - r4 = r0 + r0; - case 0x66ed4: - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x670bc; - run_67000(); return; - } - case 0x66edc: - r3 = r4 - r3; - writePages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff] = r3; - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x66ef0; - continue; - } - r20 = r7 + r0; - case 0x66ef0: - r3 = r7 < 17 ? 1 : 0; - r2 = r7 + r0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x66f04; - continue; - } - r2 = r0 + 16; - case 0x66f04: - f2 = r23; - { long l = Double.doubleToLongBits(((double)f2)); f1 = (int)(l >>> 32); f0 = (int)l; } - if(r23 < 0) { - /* Next insn is delay slot */ - pc=0x67ed8; - run_67e00(); return; - } - case 0x66f18: - r3 = r2 < 10 ? 1 : 0; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f0; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x66f6c; - continue; - } - r4 = r2 + -9; - r3 = 7 << 16; - r4 = r4 << 3; - r3 = r3 + 2176; - r3 = r4 + r3; - f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - f4 = r30; - f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } - if(r30 < 0) { - /* Next insn is delay slot */ - pc=0x682ac; - run_68200(); return; - } - case 0x66f60: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f4; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f5; - case 0x66f6c: - r3 = r7 < 16 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x67354; - run_67200(); return; - } - r3 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x672c4; - run_67200(); return; - } - r3 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - if(r3 <= 0) { - /* Next insn is delay slot */ - pc=0x6845c; - run_68400(); return; - } - r3 = r3 < 23 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x682c8; - run_68200(); return; - } - r4 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r2 = 7 << 16; - r3 = r4 << 3; - r2 = r2 + 2176; - r2 = r3 + r2; - f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - f2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - f3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f2; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f3; - /* Next insn is delay slot */ - pc=0x66cd8; - run_66c00(); return; - case 0x66fe0: - r16 = r16 + 1; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - r2 = r21 & 255; - r3 = (r2&0xffffffffL) < (46&0xffffffffL) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x66c94; - run_66c00(); return; - } - case 0x67000: - pc=0x67000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_67000() throws ExecutionException { /* 0x67000 - 0x67200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x67000: - r2 = r0 + 48; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r0; - if(r21 != r2) { - /* Next insn is delay slot */ - pc=0x66da4; - run_66c00(); return; - } - case 0x67010: - addr=r16+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r3 = r0 + 88; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x67e68; - run_67e00(); return; - } - r3 = r0 + 120; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x67e68; - run_67e00(); return; - } - r2 = r16 + 1; - r3 = r0 + 48; - case 0x67034: - r16 = r2 + r0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - r2 = r2 + 1; - addr=r2+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - if(r21 == r3) { - /* Next insn is delay slot */ - pc=0x67034; - continue; - } - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x6728c; - run_67200(); return; - } - r19 = r0 + 1; - /* Next insn is delay slot */ - pc=0x66da8; - run_66c00(); return; - case 0x67064: - r3 = r0 + 1; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x66d7c; - run_66c00(); return; - case 0x67074: - r5 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r4 = 32768 << 16; - r2 = r5 ^ r4; - r3 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x66d0c; - run_66c00(); return; - case 0x6708c: - r3 = r0 + r0; - case 0x67090: - r2 = r21 + -49; - r2 = (r2&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x67e08; - run_67e00(); return; - } - r4 = r0 + -33; - r4 = r21 & r4; - r2 = r0 + 69; - r5 = r3 + r0; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x66cac; - run_66c00(); return; - } - r9 = r0 + 1; - case 0x670bc: - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x6728c; - run_67200(); return; - } - if(r19 != r0) { - /* Next insn is delay slot */ - pc=0x6728c; - run_67200(); return; - } - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x66cc8; - run_66c00(); return; - } - r2 = r0 + 78; - if(r21 == r2) { - /* Next insn is delay slot */ - pc=0x67104; - continue; - } - r2 = r21 < 79 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x68518; - run_68400(); return; - } - r2 = r0 + 105; - if(r21 == r2) { - /* Next insn is delay slot */ - pc=0x68524; - run_68400(); return; - } - r2 = r0 + 110; - if(r21 != r2) { - /* Next insn is delay slot */ - pc=0x66cc8; - run_66c00(); return; - } - case 0x67104: - r3 = 7 << 16; - r4 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r3 = r3 + 4320; - case 0x67110: - r3 = r3 + 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x6868c; - run_68600(); return; - } - r4 = r4 + 1; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r6 = r2 + -65; - r6 = r6 & 255; - r6 = (r6&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x67148; - continue; - } - r2 = r2 + 32; - case 0x67148: - if(r2 == r5) { - /* Next insn is delay slot */ - pc=0x67110; - continue; - } - /* Next insn is delay slot */ - pc=0x66cc8; - run_66c00(); return; - case 0x67158: - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x66cb8; - run_66c00(); return; - } - case 0x67160: - r22 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r2 = r22 + 1; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - addr=r22+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - r2 = r0 + 43; - if(r21 == r2) { - /* Next insn is delay slot */ - pc=0x67ca8; - run_67c00(); return; - } - r2 = r0 + 45; - if(r21 != r2) { - /* Next insn is delay slot */ - pc=0x67c9c; - run_67c00(); return; - } - r10 = r0 + 1; - case 0x67190: - r2 = r22 + 2; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - addr=r22+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - case 0x671a0: - r2 = r21 + -48; - r2 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x67bc8; - run_67a00(); return; - } - r2 = r0 + 48; - if(r21 != r2) { - /* Next insn is delay slot */ - pc=0x671dc; - continue; - } - r2 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r4 = r0 + 48; - r2 = r2 + 1; - case 0x671c8: - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - r2 = r2 + 1; - if(r21 == r4) { - /* Next insn is delay slot */ - pc=0x671c8; - continue; - } - case 0x671dc: - r2 = r21 + -49; - r2 = (r2&0xffffffffL) < (9&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x66ed0; - run_66e00(); return; - } - r11 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r4 = r21 + -48; - r8 = r11 + 1; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r8; - addr=r11+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - case 0x67200: - pc=0x67200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_67200() throws ExecutionException { /* 0x67200 - 0x67400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x67200: - r2 = r21 + -48; - r2 = r2 & 255; - r2 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x67254; - continue; - } - r2 = r11 + 2; - case 0x6721c: - r6 = r4 << 1; - r4 = r4 << 3; - r4 = r6 + r4; - r21 = r4 + r21; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - r4 = r21 + -48; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - r8 = r2 + r0; - r6 = r21 + -48; - r6 = r6 & 255; - r6 = (r6&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - r2 = r2 + 1; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x6721c; - continue; - } - case 0x67254: - r2 = r8 - r11; - r2 = r2 < 9 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x67e5c; - run_67e00(); return; - } - r2 = r4 < 20000 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x67e5c; - run_67e00(); return; - } - case 0x67270: - if(r10 == r0) { - /* Next insn is delay slot */ - pc=0x66ed4; - run_66e00(); return; - } - r4 = r0 - r4; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x66edc; - run_66e00(); return; - } - /* Next insn is delay slot */ - pc=0x670bc; - run_67000(); return; - case 0x6728c: - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x66cd8; - run_66c00(); return; - case 0x6729c: - r4 = 32752 << 16; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r4; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; - case 0x672a8: - r2 = r2 & 8; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x672c4; - continue; - } - r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r2 = 32768 << 16; - r2 = r2 | r3; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - case 0x672c4: - f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x66cd8; - run_66c00(); return; - case 0x672e4: - r4 = r18 + r0; - r17 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x672f4; - pc=0x5ae00; - run_5ae00(); return; - case 0x672f4: - r4 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x67300; - pc=0x10268; - run_10200(); return; - case 0x67300: - r2 = r17 + r2; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x67be0; - run_67a00(); return; - } - r3 = r0 + 48; - if(r21 != r3) { - /* Next insn is delay slot */ - pc=0x6708c; - run_67000(); return; - } - r3 = r0 + r0; - r5 = r0 + 48; - /* Next insn is delay slot */ - pc=0x67334; - continue; - case 0x67330: - r2 = r4 + r0; - case 0x67334: - r4 = r2 + 1; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r4; - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - r3 = r3 + 1; - if(r21 == r5) { - /* Next insn is delay slot */ - pc=0x67330; - continue; - } - /* Next insn is delay slot */ - pc=0x67090; - run_67000(); return; - case 0x67354: - r3 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r2 = r7 - r2; - r2 = r3 + r2; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x68110; - run_68000(); return; - } - r3 = r2 & 15; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x673a4; - continue; - } - r4 = 7 << 16; - r3 = r3 << 3; - r4 = r4 + 2176; - r3 = r3 + r4; - f2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f0 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - f3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - f1 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f2; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f3; - case 0x673a4: - r3 = r0 + -16; - r2 = r2 & r3; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x67cfc; - run_67c00(); return; - } - case 0x673b4: - f4 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r22 = r0 + r0; - f5 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f4; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f5; - case 0x673cc: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r23; - r5 = r16 + r0; - r4 = r18 + r0; - r6 = r20 + r0; - /* Next insn is delay slot */ - r31=0x673e4; - pc=0x5be00; - run_5be00(); return; - case 0x673e4: - r3 = r2 + 12; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r23 = r2 + r0; - f24 = readPages[(r28+-30924)>>>12][((r28+-30924)>>>2)&0x3ff]; - r2 = r0 - r3; - r3 = r3 >> 31; - case 0x67400: - pc=0x67400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_67400() throws ExecutionException { /* 0x67400 - 0x67600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x67400: - r16 = r3 & r2; - f20 = readPages[(r28+-30908)>>>12][((r28+-30908)>>>2)&0x3ff]; - r3 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - f22 = readPages[(r28+-30932)>>>12][((r28+-30932)>>>2)&0x3ff]; - f25 = readPages[(r28+-30928)>>>12][((r28+-30928)>>>2)&0x3ff]; - r3 = r0 < r3 ? 1 : 0; - f21 = readPages[(r28+-30912)>>>12][((r28+-30912)>>>2)&0x3ff]; - f23 = readPages[(r28+-30936)>>>12][((r28+-30936)>>>2)&0x3ff]; - writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r3; - f26 = f24; - f27 = f25; - case 0x67428: - r5 = readPages[(r23+4)>>>12][((r23+4)>>>2)&0x3ff]; - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x67438; - pc=0x5b800; - run_5b800(); return; - case 0x67438: - r6 = readPages[(r23+16)>>>12][((r23+16)>>>2)&0x3ff]; - r5 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r6 = r6 + 2; - r4 = r2 + 12; - r6 = r6 << 2; - r21 = r2 + r0; - /* Next insn is delay slot */ - r31=0x67458; - pc=0x48fdc; - run_48e00(); return; - case 0x67458: - r5 = r29 + 24; - r7 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r4 = r29 + 32; - r6 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r5; - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x6747c; - pc=0x5d600; - run_5d600(); return; - case 0x6747c: - r4 = r18 + r0; - r5 = r0 + 1; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x67490; - pc=0x5c400; - run_5c400(); return; - case 0x67490: - r3 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r19 = r2 + r0; - r7 = r0 + r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x674a8; - continue; - } - r7 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - case 0x674a8: - r2 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x67920; - run_67800(); return; - } - r20 = r16 + r2; - r3 = r7 + r0; - case 0x674c0: - r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r2 = r2 - r22; - r5 = r2 + r4; - r5 = r5 < -1021 ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x6781c; - run_67800(); return; - } - r2 = r2 + 1075; - case 0x674dc: - r30 = r20 + r2; - r4 = r20 < r30 ? 1 : 0; - r2 = r3 + r2; - r17 = r2 + r22; - r2 = r30 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x674fc; - continue; - } - r2 = r20 + r0; - case 0x674fc: - r4 = r17 < r2 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x6750c; - continue; - } - r2 = r17 + r0; - case 0x6750c: - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x67520; - continue; - } - r30 = r30 - r2; - r17 = r17 - r2; - r20 = r20 - r2; - case 0x67520: - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x67578; - continue; - } - r5 = r19 + r0; - r4 = r18 + r0; - r6 = r16 + r0; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x67540; - pc=0x5ca00; - run_5ca00(); return; - case 0x67540: - r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r4 = r18 + r0; - r5 = r2 + r0; - r19 = r2 + r0; - /* Next insn is delay slot */ - r31=0x67558; - pc=0x5c600; - run_5c600(); return; - case 0x67558: - r5 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r4 = r18 + r0; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x6756c; - pc=0x5ba00; - run_5ba00(); return; - case 0x6756c: - r2 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - r7 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - case 0x67578: - if(r30 <= 0) { - /* Next insn is delay slot */ - pc=0x675a0; - continue; - } - r5 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r4 = r18 + r0; - r6 = r30 + r0; - writePages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x67598; - pc=0x5cc00; - run_5cc00(); return; - case 0x67598: - r7 = readPages[(r29+124)>>>12][((r29+124)>>>2)&0x3ff]; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r2; - case 0x675a0: - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x675c0; - continue; - } - r5 = r21 + r0; - r4 = r18 + r0; - r6 = r7 + r0; - /* Next insn is delay slot */ - r31=0x675bc; - pc=0x5ca00; - run_5ca00(); return; - case 0x675bc: - r21 = r2 + r0; - case 0x675c0: - if(r17 <= 0) { - /* Next insn is delay slot */ - pc=0x675e0; - continue; - } - r5 = r21 + r0; - r4 = r18 + r0; - r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x675dc; - pc=0x5cc00; - run_5cc00(); return; - case 0x675dc: - r21 = r2 + r0; - case 0x675e0: - if(r20 <= 0) { - /* Next insn is delay slot */ - pc=0x67600; - run_67600(); return; - } - r5 = r19 + r0; - r4 = r18 + r0; - r6 = r20 + r0; - /* Next insn is delay slot */ - r31=0x675fc; - pc=0x5cc00; - run_5cc00(); return; - case 0x675fc: - r19 = r2 + r0; - case 0x67600: - pc=0x67600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_67600() throws ExecutionException { /* 0x67600 - 0x67800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x67600: - r5 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r4 = r18 + r0; - r6 = r21 + r0; - /* Next insn is delay slot */ - r31=0x67614; - pc=0x5d000; - run_5d000(); return; - case 0x67614: - r30 = readPages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff]; - r4 = r2 + r0; - writePages[(r2+12)>>>12][((r2+12)>>>2)&0x3ff] = r0; - r5 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x67630; - pc=0x5ce00; - run_5ce00(); return; - case 0x67630: - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x67ef4; - run_67e00(); return; - } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x67fe8; - run_67e00(); return; - } - r4 = r20 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x67650; - pc=0x5d800; - run_5d800(); return; - case 0x67650: - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<=(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x6782c; - run_67800(); return; - } - if(r30 == r0) { - /* Next insn is delay slot */ - pc=0x67930; - run_67800(); return; - } - r3 = readPages[(r28+-30924)>>>12][((r28+-30924)>>>2)&0x3ff]; - r2 = readPages[(r28+-30928)>>>12][((r28+-30928)>>>2)&0x3ff]; - r6 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f26; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f27; - case 0x6767c: - r5 = 32752 << 16; - r17 = r6 & r5; - r7 = 32736 << 16; - if(r17 == r7) { - /* Next insn is delay slot */ - pc=0x67878; - run_67800(); return; - } - case 0x67690: - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x67778; - continue; - } - r5 = 1696 << 16; - r5 = r5 + 1; - r5 = ((r17 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x67778; - continue; - } - f0 = readPages[(r28+-30892)>>>12][((r28+-30892)>>>2)&0x3ff]; - f2 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - f1 = readPages[(r28+-30896)>>>12][((r28+-30896)>>>2)&0x3ff]; - f3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<=(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x6776c; - continue; - } - f0 = readPages[(r28+-30884)>>>12][((r28+-30884)>>>2)&0x3ff]; - f1 = readPages[(r28+-30888)>>>12][((r28+-30888)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<=(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x67b58; - run_67a00(); return; - } - r4 = fcsr; - r4 = fcsr; - r1 = r4 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f0 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f0 = (int)(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL))); break; // Round towards zero - case 2: f0 = (int)Math.ceil((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards plus infinity - case 3: f0 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r4; - r2 = f0; - case 0x67720: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x67b38; - run_67a00(); return; - } - f4 = r2; - { long l = Double.doubleToLongBits(((double)f4)); f3 = (int)(l >>> 32); f2 = (int)l; } - if(r2 < 0) { - /* Next insn is delay slot */ - pc=0x67e38; - run_67e00(); return; - } - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f2; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f3; - case 0x67744: - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x67ba8; - run_67a00(); return; - } - r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r2 = 32768 << 16; - r4 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r2 = r3 ^ r2; - writePages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff] = r2; - writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = r4; - case 0x67764: - r3 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; - r2 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - case 0x6776c: - r5 = 1712 << 16; - r5 = r2 + r5; - r2 = r5 - r17; - case 0x67778: - f12 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - f28 = r3; - f13 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - f29 = r2; - /* Next insn is delay slot */ - r31=0x67790; - pc=0x5d200; - run_5d200(); return; - case 0x67790: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - f2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - f3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f3; - r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f2; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f3; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f2; - case 0x677bc: - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x677d4; - continue; - } - r3 = 32752 << 16; - r3 = r2 & r3; - if(r17 == r3) { - /* Next insn is delay slot */ - pc=0x679f4; - run_67800(); return; - } - case 0x677d4: - r5 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x677e4; - pc=0x5ba00; - run_5ba00(); return; - case 0x677e4: - r4 = r18 + r0; - r5 = r21 + r0; - /* Next insn is delay slot */ - r31=0x677f4; - pc=0x5ba00; - run_5ba00(); return; - case 0x677f4: - r4 = r18 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x67804; - pc=0x5ba00; - run_5ba00(); return; - case 0x67800: - pc=0x67800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_67800() throws ExecutionException { /* 0x67800 - 0x67a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x67800: - case 0x67804: - r4 = r18 + r0; - r5 = r20 + r0; - /* Next insn is delay slot */ - r31=0x67814; - pc=0x5ba00; - run_5ba00(); return; - case 0x67814: - /* Next insn is delay slot */ - pc=0x67428; - run_67400(); return; - case 0x6781c: - r2 = r0 + 54; - r2 = r2 - r4; - /* Next insn is delay slot */ - pc=0x674dc; - run_67400(); return; - case 0x6782c: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f23&0xffffffffL) << 32) | (f22&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f2; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f3; - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x679b8; - continue; - } - r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r2 = 32768 << 16; - r4 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r2 = r3 ^ r2; - writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r2; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r4; - case 0x67858: - r6 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r5 = 32752 << 16; - r17 = r6 & r5; - r7 = 32736 << 16; - r3 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r2 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - if(r17 != r7) { - /* Next insn is delay slot */ - pc=0x67690; - run_67600(); return; - } - case 0x67878: - r7 = 64688 << 16; - r7 = r6 + r7; - f28 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r7; - f30 = r3; - f29 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - f3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - f31 = r2; - f12 = f28; - f13 = f29; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r5; - writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = f2; - writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = f3; - /* Next insn is delay slot */ - r31=0x678b4; - pc=0x5d200; - run_5d200(); return; - case 0x678b4: - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f31&0xffffffffL) << 32) | (f30&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r5 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f29&0xffffffffL) << 32) | (f28&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f5; - r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f4; - r3 = r5 & r2; - r2 = 31904 << 16; - r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x67b0c; - run_67a00(); return; - } - r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r5 = r5 + -1; - if(r3 == r5) { - /* Next insn is delay slot */ - pc=0x680b4; - run_68000(); return; - } - case 0x678f0: - r5 = r0 + -1; - r2 = 32751 << 16; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r5; - r2 = r2 | 65535; - f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x677d4; - run_67600(); return; - case 0x67920: - r3 = r7 - r2; - r20 = r16 + r0; - /* Next insn is delay slot */ - pc=0x674c0; - run_67400(); return; - case 0x67930: - r2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x67ae4; - run_67a00(); return; - } - r6 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r2 = 15 << 16; - r2 = r2 | 65535; - r2 = r2 & r6; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x679d8; - continue; - } - f2 = readPages[(r28+-30924)>>>12][((r28+-30924)>>>2)&0x3ff]; - f3 = readPages[(r28+-30928)>>>12][((r28+-30928)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x6826c; - run_68200(); return; - } - f4 = readPages[(r28+-30932)>>>12][((r28+-30932)>>>2)&0x3ff]; - r2 = 32768 << 16; - f5 = readPages[(r28+-30936)>>>12][((r28+-30936)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f5; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f4; - r3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r4 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r2 = r3 ^ r2; - writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = r2; - writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = r4; - case 0x679a8: - r3 = readPages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff]; - r2 = readPages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x6767c; - run_67600(); return; - case 0x679b8: - f0 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - f1 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = f0; - writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x67858; - continue; - case 0x679d8: - r6 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - case 0x679dc: - r3 = readPages[(r28+-30900)>>>12][((r28+-30900)>>>2)&0x3ff]; - r2 = readPages[(r28+-30904)>>>12][((r28+-30904)>>>2)&0x3ff]; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f24; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f25; - /* Next insn is delay slot */ - pc=0x6767c; - run_67600(); return; - case 0x679f4: - f2 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - f3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - case 0x67a00: - pc=0x67a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_67a00() throws ExecutionException { /* 0x67a00 - 0x67c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x67a00: - r4 = fcsr; - r4 = fcsr; - r1 = r4 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f0 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f0 = (int)(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL))); break; // Round towards zero - case 2: f0 = (int)Math.ceil((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards plus infinity - case 3: f0 = (int)Math.floor((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r4; - { long l = Double.doubleToLongBits(((double)f0)); f1 = (int)(l >>> 32); f0 = (int)l; } - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x67a4c; - continue; - } - r3 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x67cb4; - run_67c00(); return; - } - case 0x67a4c: - f0 = readPages[(r28+-30876)>>>12][((r28+-30876)>>>2)&0x3ff]; - f1 = readPages[(r28+-30880)>>>12][((r28+-30880)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x67a8c; - continue; - } - f0 = readPages[(r28+-30868)>>>12][((r28+-30868)>>>2)&0x3ff]; - f1 = readPages[(r28+-30872)>>>12][((r28+-30872)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))<(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x677d4; - run_67600(); return; - } - case 0x67a8c: - r5 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x67a9c; - pc=0x5ba00; - run_5ba00(); return; - case 0x67a9c: - r4 = r18 + r0; - r5 = r21 + r0; - /* Next insn is delay slot */ - r31=0x67aac; - pc=0x5ba00; - run_5ba00(); return; - case 0x67aac: - r4 = r18 + r0; - r5 = r19 + r0; - /* Next insn is delay slot */ - r31=0x67abc; - pc=0x5ba00; - run_5ba00(); return; - case 0x67abc: - r4 = r18 + r0; - r5 = r23 + r0; - /* Next insn is delay slot */ - r31=0x67acc; - pc=0x5ba00; - run_5ba00(); return; - case 0x67acc: - r4 = r18 + r0; - r5 = r20 + r0; - /* Next insn is delay slot */ - r31=0x67adc; - pc=0x5ba00; - run_5ba00(); return; - case 0x67adc: - /* Next insn is delay slot */ - pc=0x66cd8; - run_66c00(); return; - case 0x67ae4: - r3 = r0 + 1; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x679d8; - run_67800(); return; - } - r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x67fd0; - run_67e00(); return; - } - r6 = r2 + r0; - /* Next insn is delay slot */ - pc=0x679dc; - run_67800(); return; - case 0x67b0c: - r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r2 = 848 << 16; - r2 = r2 + r3; - f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x677bc; - run_67600(); return; - case 0x67b38: - f0 = readPages[(r28+-30924)>>>12][((r28+-30924)>>>2)&0x3ff]; - f1 = readPages[(r28+-30928)>>>12][((r28+-30928)>>>2)&0x3ff]; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f0; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x67744; - run_67600(); return; - case 0x67b58: - f2 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r3 = 32768 << 16; - f3 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - r4 = fcsr; - r4 = fcsr; - r1 = r4 | 3; - r1 = r1 ^ 2; - fcsr = r1; - switch(fcsr & 3) { - case 0: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+0.5); break; // Round to nearest - case 1: f2 = (int)(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL))); break; // Round towards zero - case 2: f2 = (int)Math.ceil((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards plus infinity - case 3: f2 = (int)Math.floor((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); break; // Round towards minus infinity - } - fcsr = r4; - r2 = f2; - r2 = r2 | r3; - /* Next insn is delay slot */ - pc=0x67720; - run_67600(); return; - case 0x67ba8: - f0 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - f1 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = f0; - writePages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x67764; - run_67600(); return; - case 0x67bc8: - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r22; - r4 = r0 + r0; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x66edc; - run_66e00(); return; - } - /* Next insn is delay slot */ - pc=0x670bc; - run_67000(); return; - case 0x67be0: - r7 = r20 + r0; - r5 = r0 + r0; - r3 = r0 + r0; - case 0x67bec: - r2 = r21 + -48; - r4 = (r2&0xffffffffL) < (10&0xffffffffL) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x67cf0; - run_67c00(); return; - } - r5 = r5 + 1; - case 0x67c00: - pc=0x67c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_67c00() throws ExecutionException { /* 0x67c00 - 0x67e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x67c00: - r9 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x67e24; - run_67e00(); return; - } - r2 = r0 + 1; - r4 = r5 + r0; - r6 = r7 < 17 ? 1 : 0; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x67c60; - continue; - } - r2 = r7 + 1; - r8 = r5 + r7; - r6 = r7 < 17 ? 1 : 0; - case 0x67c30: - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x67c50; - continue; - } - r4 = r2 < 10 ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x67ec4; - run_67e00(); return; - } - r4 = r23 << 1; - r23 = r23 << 3; - r23 = r4 + r23; - case 0x67c50: - r2 = r2 + 1; - r4 = r5 + r0; - if(r2 != r8) { - /* Next insn is delay slot */ - pc=0x67c30; - continue; - } - case 0x67c60: - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x6850c; - run_68400(); return; - } - case 0x67c68: - r2 = r7 + r5; - r2 = r2 < 10 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x68674; - run_68600(); return; - } - r2 = r23 << 1; - r23 = r23 << 3; - r23 = r2 + r23; - r23 = r23 + r21; - case 0x67c88: - r3 = r3 + r4; - r7 = r7 + r4; - r5 = r0 + r0; - /* Next insn is delay slot */ - pc=0x67e24; - run_67e00(); return; - case 0x67c9c: - r10 = r0 + r0; - /* Next insn is delay slot */ - pc=0x671a0; - run_67000(); return; - case 0x67ca8: - r10 = r0 + r0; - /* Next insn is delay slot */ - pc=0x67190; - run_67000(); return; - case 0x67cb4: - r3 = 15 << 16; - r3 = r3 | 65535; - r2 = r2 & r3; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x67a4c; - run_67a00(); return; - } - f0 = readPages[(r28+-30860)>>>12][((r28+-30860)>>>2)&0x3ff]; - f1 = readPages[(r28+-30864)>>>12][((r28+-30864)>>>2)&0x3ff]; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))<(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x677d4; - run_67600(); return; - } - /* Next insn is delay slot */ - pc=0x67a8c; - run_67a00(); return; - case 0x67cf0: - r9 = r0 + 1; - /* Next insn is delay slot */ - pc=0x66ebc; - run_66e00(); return; - case 0x67cfc: - r3 = r2 < 309 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x680f4; - run_68000(); return; - } - r2 = r2 >> 4; - r3 = r2 < 2 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x68708; - run_68600(); return; - } - f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r6 = 7 << 16; - r6 = r6 + 2136; - f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r3 = r6 + r0; - r4 = r0 + r0; - case 0x67d30: - r5 = r2 & 1; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x67d50; - continue; - } - f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - case 0x67d50: - r2 = r2 >> 1; - r5 = r2 < 2 ? 1 : 0; - r4 = r4 + 1; - r3 = r3 + 8; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x67d30; - continue; - } - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f0; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f1; - case 0x67d70: - r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r4 = r4 << 3; - r6 = r6 + r4; - r2 = 64688 << 16; - r2 = r2 + r3; - f2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f0 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - f3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - f1 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - r2 = 32752 << 16; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - r4 = 31904 << 16; - r4 = r4 + 1; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f3; - r5 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f2; - r3 = r2 & r5; - r4 = ((r3 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x680f4; - run_68000(); return; - } - r4 = 31888 << 16; - r4 = r4 + 1; - r3 = ((r3 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x68578; - run_68400(); return; - } - r2 = r2 + -1; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r2; - f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r22 = r0 + r0; - f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; - case 0x67e00: - pc=0x67e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_67e00() throws ExecutionException { /* 0x67e00 - 0x68000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x67e00: - /* Next insn is delay slot */ - pc=0x673cc; - run_67200(); return; - case 0x67e08: - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r21 = r21 + -48; - r9 = r16 + r0; - r7 = r0 + r0; - if(r21 != r0) { - /* Next insn is delay slot */ - pc=0x68370; - run_68200(); return; - } - r5 = r0 + 1; - case 0x67e24: - r2 = r9 + 1; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - addr=r9+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r21 = tmp; - /* Next insn is delay slot */ - pc=0x67bec; - run_67a00(); return; - case 0x67e38: - f0 = readPages[(r28+-30916)>>>12][((r28+-30916)>>>2)&0x3ff]; - f1 = readPages[(r28+-30920)>>>12][((r28+-30920)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f2; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f3; - /* Next insn is delay slot */ - pc=0x67744; - run_67600(); return; - case 0x67e5c: - r4 = r0 + 19999; - /* Next insn is delay slot */ - pc=0x67270; - run_67200(); return; - case 0x67e68: - r3 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r2 = r29 + 36; - r19 = 7 << 16; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r3; - r4 = r18 + r0; - r5 = r29 + 40; - r6 = r19 + 12276; - r7 = r29 + 32; - /* Next insn is delay slot */ - r31=0x67e94; - pc=0x6b600; - run_6b600(); return; - case 0x67e94: - r17 = r2 & 7; - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x6728c; - run_67200(); return; - } - r3 = r0 + 6; - if(r17 != r3) { - /* Next insn is delay slot */ - pc=0x68380; - run_68200(); return; - } - r16 = r16 + 1; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x66cd8; - run_66c00(); return; - case 0x67ec4: - r4 = r30 << 1; - r30 = r30 << 3; - r30 = r4 + r30; - /* Next insn is delay slot */ - pc=0x67c50; - run_67c00(); return; - case 0x67ed8: - f2 = readPages[(r28+-30916)>>>12][((r28+-30916)>>>2)&0x3ff]; - f3 = readPages[(r28+-30920)>>>12][((r28+-30920)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))+(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - /* Next insn is delay slot */ - pc=0x66f18; - run_66e00(); return; - case 0x67ef4: - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x6804c; - run_68000(); return; - } - r4 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x6804c; - run_68000(); return; - } - r16 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r2 = 15 << 16; - r2 = r2 | 65535; - r2 = r2 & r16; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6804c; - run_68000(); return; - } - r3 = 32752 << 16; - r2 = 1712 << 16; - r3 = r3 & r16; - r2 = r2 + 1; - r2 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6804c; - run_68000(); return; - } - r2 = readPages[(r20+20)>>>12][((r20+20)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x67f64; - continue; - } - r2 = readPages[(r20+16)>>>12][((r20+16)>>>2)&0x3ff]; - r2 = r2 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6804c; - run_68000(); return; - } - case 0x67f64: - r5 = r20 + r0; - r4 = r18 + r0; - r6 = r0 + 1; - /* Next insn is delay slot */ - r31=0x67f78; - pc=0x5cc00; - run_5cc00(); return; - case 0x67f78: - r4 = r2 + r0; - r5 = r19 + r0; - r20 = r2 + r0; - /* Next insn is delay slot */ - r31=0x67f8c; - pc=0x5ce00; - run_5ce00(); return; - case 0x67f8c: - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x6804c; - run_68000(); return; - } - r2 = r16 + r0; - case 0x67f98: - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x686b8; - run_68600(); return; - } - r3 = 32752 << 16; - r4 = 1712 << 16; - r3 = r2 & r3; - r4 = r4 + 1; - r4 = ((r3 & 0xffffffffL) < (r4 & 0xffffffffL)) ? 1 : 0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x686b8; - run_68600(); return; - } - r2 = 880 << 16; - r2 = r2 + 1; - r3 = ((r3 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x68054; - run_68000(); return; - } - case 0x67fd0: - r2 = r0 + 34; - writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x67a8c; - run_67a00(); return; - case 0x67fe8: - if(r30 == r0) { - /* Next insn is delay slot */ - pc=0x6833c; - run_68200(); return; - } - r4 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r2 = 15 << 16; - r2 = r2 | 65535; - r3 = r2 & r4; - case 0x68000: - pc=0x68000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_68000() throws ExecutionException { /* 0x68000 - 0x68200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x68000: - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x685a0; - run_68400(); return; - } - r2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - case 0x68010: - r2 = r2 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6804c; - continue; - } - f12 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - f13 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x68030; - pc=0x5d200; - run_5d200(); return; - case 0x68030: - f2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - f3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f2; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f3; - case 0x6804c: - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x67a8c; - run_67a00(); return; - } - case 0x68054: - writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = r0; - f0 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r4 = 14672 << 16; - f2 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; - writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = r4; - f1 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - f3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f1; - r2 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x67a8c; - run_67a00(); return; - } - r3 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x67a8c; - run_67a00(); return; - } - r2 = r0 + 34; - writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x67a8c; - run_67a00(); return; - case 0x680b4: - r4 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; - r2 = r0 + -1; - if(r4 != r2) { - /* Next insn is delay slot */ - pc=0x678f0; - run_67800(); return; - } - r2 = r0 + 34; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; - writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; - f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r2 = 32752 << 16; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x67a8c; - run_67a00(); return; - case 0x680f4: - r2 = r0 + 34; - writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; - case 0x680fc: - r2 = 32752 << 16; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x672c4; - run_67200(); return; - case 0x68110: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x673b4; - run_67200(); return; - } - r2 = r0 - r2; - r3 = r2 & 15; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x68158; - continue; - } - r4 = 7 << 16; - r3 = r3 << 3; - r4 = r4 + 2176; - r3 = r3 + r4; - f2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f0 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - f3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - f1 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f2; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f3; - case 0x68158: - r2 = r2 >> 4; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x673b4; - run_67200(); return; - } - r3 = r2 < 32 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x68254; - run_68200(); return; - } - r3 = r2 & 16; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6871c; - run_68600(); return; - } - r22 = r0 + r0; - case 0x68180: - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x681d0; - continue; - } - f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r3 = 7 << 16; - f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r3 = r3 + 4536; - case 0x68198: - r4 = r2 & 1; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x681b8; - continue; - } - f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))*(Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))); f1 = (int)(l >>> 32); f0 = (int)l; } - case 0x681b8: - r2 = r2 >> 1; - r3 = r3 + 8; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x68198; - continue; - } - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = f0; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = f1; - case 0x681d0: - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x68218; - run_68200(); return; - } - r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r4 = r0 + 107; - r2 = r3 << 1; - r2 = r2 >>> 21; - r2 = r4 - r2; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x68218; - run_68200(); return; - } - r4 = r2 < 32 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x6876c; - run_68600(); return; - } - case 0x68200: - pc=0x68200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_68200() throws ExecutionException { /* 0x68200 - 0x68400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x68200: - r4 = r2 < 53 ? 1 : 0; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x6878c; - run_68600(); return; - } - r2 = 880 << 16; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - case 0x68218: - f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; - f2 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - f0 = r0; - f3 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - f1 = r0; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (0!=0)) { - /* Next insn is delay slot */ - pc=0x673cc; - run_67200(); return; - } - case 0x68254: - r2 = r0 + 34; - writePages[(r18+0)>>>12][((r18+0)>>>2)&0x3ff] = r2; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x66cd8; - run_66c00(); return; - case 0x6826c: - f2 = readPages[(r28+-30940)>>>12][((r28+-30940)>>>2)&0x3ff]; - f4 = readPages[(r28+-30932)>>>12][((r28+-30932)>>>2)&0x3ff]; - f3 = readPages[(r28+-30944)>>>12][((r28+-30944)>>>2)&0x3ff]; - f5 = readPages[(r28+-30936)>>>12][((r28+-30936)>>>2)&0x3ff]; - writePages[(r29+116)>>>12][((r29+116)>>>2)&0x3ff] = f2; - writePages[(r29+112)>>>12][((r29+112)>>>2)&0x3ff] = f3; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = f4; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = f5; - /* Next insn is delay slot */ - pc=0x679a8; - run_67800(); return; - case 0x68294: - r17 = r16 + r0; - r30 = r0 + r0; - r23 = r0 + r0; - r20 = r0 + r0; - /* Next insn is delay slot */ - pc=0x66e64; - run_66e00(); return; - case 0x682ac: - f4 = readPages[(r28+-30916)>>>12][((r28+-30916)>>>2)&0x3ff]; - f5 = readPages[(r28+-30920)>>>12][((r28+-30920)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))+(Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - /* Next insn is delay slot */ - pc=0x66f60; - run_66e00(); return; - case 0x682c8: - r3 = r0 + 37; - r4 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r3 = r3 - r7; - r3 = r3 < r4 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x67354; - run_67200(); return; - } - r2 = r0 + 15; - r7 = r2 - r7; - r2 = 7 << 16; - r2 = r2 + 2176; - r3 = r7 << 3; - r3 = r3 + r2; - f2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r3 = r4 - r7; - r3 = r3 << 3; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - r2 = r3 + r2; - f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))*(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f4; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f5; - /* Next insn is delay slot */ - pc=0x66cd8; - run_66c00(); return; - case 0x6833c: - r2 = 15 << 16; - r3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r2 = r2 | 65535; - r2 = r2 & r3; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x684a8; - run_68400(); return; - } - r4 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x684a8; - run_68400(); return; - } - r2 = r3 + r0; - /* Next insn is delay slot */ - pc=0x67f98; - run_67e00(); return; - case 0x68370: - r4 = r0 + 1; - r5 = r0 + 1; - /* Next insn is delay slot */ - pc=0x67c68; - run_67c00(); return; - case 0x68380: - r6 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x683b8; - continue; - } - r5 = readPages[(r19+12276)>>>12][((r19+12276)>>>2)&0x3ff]; - r4 = r29 + 24; - writePages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - r31=0x683a4; - pc=0x5dc00; - run_5dc00(); return; - case 0x683a4: - r5 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r4 = r18 + r0; - /* Next insn is delay slot */ - r31=0x683b4; - pc=0x5ba00; - run_5ba00(); return; - case 0x683b4: - r2 = readPages[(r29+120)>>>12][((r29+120)>>>2)&0x3ff]; - case 0x683b8: - r3 = (r17&0xffffffffL) < (7&0xffffffffL) ? 1 : 0; - r4 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x672a8; - run_67200(); return; - } - r3 = 7 << 16; - r17 = r17 << 2; - r3 = r3 + 4508; - r3 = r3 + r17; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r3; - return; - case 0x683e8: - r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r5 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r4; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x672a8; - run_67200(); return; - case 0x68400: - pc=0x68400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_68400() throws ExecutionException { /* 0x68400 - 0x68600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x68400: - r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r5 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r3; - r3 = 65519 << 16; - r4 = r4 + 1075; - r3 = r3 | 65535; - r4 = r4 << 20; - r3 = r5 & r3; - r3 = r4 | r3; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x672a8; - run_67200(); return; - case 0x68430: - r3 = 32767 << 16; - r3 = r3 | 65535; - r5 = r0 + -1; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r3; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r5; - /* Next insn is delay slot */ - pc=0x672a8; - run_67200(); return; - case 0x6844c: - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x672a8; - run_67200(); return; - case 0x6845c: - r4 = readPages[(r29+92)>>>12][((r29+92)>>>2)&0x3ff]; - r3 = r4 < -22 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x67354; - run_67200(); return; - } - r3 = 7 << 16; - r2 = r4 << 3; - r3 = r3 + 2176; - r2 = r3 - r2; - f0 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - f2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - f1 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - f3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f3&0xffffffffL) << 32) | (f2&0xffffffffL)))/(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f3 = (int)(l >>> 32); f2 = (int)l; } - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f2; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f3; - /* Next insn is delay slot */ - pc=0x66cd8; - run_66c00(); return; - case 0x684a8: - r2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r2 = r2 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6804c; - run_68000(); return; - } - f12 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - f13 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x684d0; - pc=0x5d200; - run_5d200(); return; - case 0x684d0: - f4 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - f5 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - { long l = Double.doubleToLongBits((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))-(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))); f5 = (int)(l >>> 32); f4 = (int)l; } - f0 = r0; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f4; - f1 = r0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f5; - fcsr = (fcsr&~0x800000) | (((Double.longBitsToDouble(((f5&0xffffffffL) << 32) | (f4&0xffffffffL)))==(Double.longBitsToDouble(((f1&0xffffffffL) << 32) | (f0&0xffffffffL)))) ? 0x800000 : 0x000000); - if(((fcsr&0x800000)!=0) == (1!=0)) { - /* Next insn is delay slot */ - pc=0x67fd0; - run_67e00(); return; - } - /* Next insn is delay slot */ - pc=0x6804c; - run_68000(); return; - case 0x6850c: - r5 = r0 + r0; - /* Next insn is delay slot */ - pc=0x67e24; - run_67e00(); return; - case 0x68518: - r2 = r0 + 73; - if(r21 != r2) { - /* Next insn is delay slot */ - pc=0x66cc8; - run_66c00(); return; - } - case 0x68524: - r4 = 7 << 16; - r2 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r4 = r4 + 4308; - case 0x68530: - r4 = r4 + 1; - addr=r4+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x68618; - run_68600(); return; - } - r2 = r2 + 1; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r6 = r3 + -65; - r6 = r6 & 255; - r6 = (r6&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x68568; - continue; - } - r3 = r3 + 32; - case 0x68568: - if(r3 == r5) { - /* Next insn is delay slot */ - pc=0x68530; - continue; - } - /* Next insn is delay slot */ - pc=0x66cc8; - run_66c00(); return; - case 0x68578: - r2 = 848 << 16; - r2 = r5 + r2; - f2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - f3 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r22 = r0 + r0; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f2; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f3; - /* Next insn is delay slot */ - pc=0x673cc; - run_67200(); return; - case 0x685a0: - r2 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x686fc; - run_68600(); return; - } - r3 = 32752 << 16; - r5 = 1696 << 16; - r3 = r4 & r3; - r5 = r5 + 1; - r5 = ((r3 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x686fc; - run_68600(); return; - } - r5 = r0 + 107; - r3 = r3 >>> 20; - r3 = r5 - r3; - r5 = r0 + -1; - r3 = r5 << (r3&0x1f); - case 0x685dc: - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x68010; - run_68000(); return; - } - r2 = 32752 << 16; - r4 = r4 & r2; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; - r2 = 16 << 16; - r2 = r4 + r2; - f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - case 0x68600: - pc=0x68600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_68600() throws ExecutionException { /* 0x68600 - 0x68800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x68600: - f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x6804c; - run_68000(); return; - case 0x68618: - r4 = 7 << 16; - r7 = r2 + r0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - r4 = r4 + 4312; - case 0x68628: - r4 = r4 + 1; - addr=r4+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r2 = r2 + 1; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x68668; - continue; - } - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r6 = r3 + -65; - r6 = r6 & 255; - r6 = (r6&0xffffffffL) < (26&0xffffffffL) ? 1 : 0; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x6865c; - continue; - } - r3 = r3 + 32; - case 0x6865c: - if(r3 == r5) { - /* Next insn is delay slot */ - pc=0x68628; - continue; - } - r2 = r7 + 1; - case 0x68668: - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x680fc; - run_68000(); return; - case 0x68674: - r2 = r30 << 1; - r30 = r30 << 3; - r30 = r2 + r30; - r30 = r30 + r21; - /* Next insn is delay slot */ - pc=0x67c88; - run_67c00(); return; - case 0x6868c: - r2 = r4 + 1; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r2; - addr=r4+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r3 = tmp; - r2 = r0 + 40; - if(r3 == r2) { - /* Next insn is delay slot */ - pc=0x68728; - continue; - } - case 0x686a4: - r4 = 32760 << 16; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r4; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x672c4; - run_67200(); return; - case 0x686b8: - r3 = 32752 << 16; - r2 = r2 & r3; - r3 = 65520 << 16; - r3 = r2 + r3; - r5 = r0 + -1; - r2 = 15 << 16; - r2 = r2 | 65535; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r5; - r2 = r3 | r2; - f0 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - f1 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = f0; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = f1; - /* Next insn is delay slot */ - pc=0x6804c; - run_68000(); return; - case 0x686fc: - r3 = r0 + -1; - /* Next insn is delay slot */ - pc=0x685dc; - run_68400(); return; - case 0x68708: - r6 = 7 << 16; - r4 = r0 + r0; - r6 = r6 + 2136; - /* Next insn is delay slot */ - pc=0x67d70; - run_67c00(); return; - case 0x6871c: - r22 = r0 + 106; - /* Next insn is delay slot */ - pc=0x68180; - run_68000(); return; - case 0x68728: - r5 = 7 << 16; - r4 = r29 + 40; - r5 = r5 + 12256; - r6 = r29 + 24; - /* Next insn is delay slot */ - r31=0x68740; - pc=0x6c200; - run_6c200(); return; - case 0x68740: - r3 = r0 + 5; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x686a4; - continue; - } - r2 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r3 = 32752 << 16; - r2 = r3 | r2; - r3 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x672c4; - run_67200(); return; - case 0x6876c: - r3 = r0 + -1; - r2 = r3 << (r2&0x1f); - r3 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r2 = r2 & r3; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x68218; - run_68200(); return; - case 0x6878c: - r4 = r0 + -1; - r2 = r4 << (r2&0x1f); - r2 = r2 & r3; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x68218; - run_68200(); return; - case 0x68800: - pc=0x68800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_68800() throws ExecutionException { /* 0x68800 - 0x68a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x68800: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x66c00; - run_66c00(); return; - case 0x68a00: - pc=0x68a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_68a00() throws ExecutionException { /* 0x68a00 - 0x68c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x68a00: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r29 = r29 + -32; - r6 = r5 + r0; - r5 = r2 + r0; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = f21; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = f20; - /* Next insn is delay slot */ - r31=0x68a28; - pc=0x66c00; - run_66c00(); return; - case 0x68a28: - f12 = f0; - f13 = f1; - f20 = f0; - f21 = f1; - /* Next insn is delay slot */ - r31=0x68a38; - pc=0x37a00; - run_37a00(); return; - case 0x68a38: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x68a60; - continue; - } - f0=Float.floatToRawIntBits((float)(Double.longBitsToDouble(((f21&0xffffffffL) << 32) | (f20&0xffffffffL)))); - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x68a60: - f20 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - f21 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r4 = r0 + r0; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=0x66a00; - run_66a00(); return; - case 0x68c00: - pc=0x68c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_68c00() throws ExecutionException { /* 0x68c00 - 0x68e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x68c00: - r2 = r0 + -1; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x68d24; - continue; - } - addr=r6+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r29 = r29 + -32; - r2 = r2 & 65503; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r16; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - addr=r6+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r6+48)>>>12][((r6+48)>>>2)&0x3ff]; - r16 = r5 & 255; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x68cb0; - continue; - } - r3 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; - r2 = readPages[(r6+52)>>>12][((r6+52)>>>2)&0x3ff]; - r2 = r3 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x68c88; - continue; - } - case 0x68c4c: - r2 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - r3 = r2 + -1; - writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r3; - addr=r2+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r16&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r2; - r2 = r16 + r0; - case 0x68c74: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x68c88: - r5 = r6 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x68c98; - pc=0x6a200; - run_6a200(); return; - case 0x68c98: - r6 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x68c4c; - continue; - } - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x68c74; - continue; - case 0x68cb0: - r2 = readPages[(r6+16)>>>12][((r6+16)>>>2)&0x3ff]; - r3 = readPages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x68cdc; - continue; - } - r2 = ((r2 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x68cdc; - continue; - } - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r2 == r16) { - /* Next insn is delay slot */ - pc=0x68d30; - continue; - } - case 0x68cdc: - r2 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; - addr=r6+66; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r16&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r6+60)>>>12][((r6+60)>>>2)&0x3ff] = r2; - r2 = r6 + 64; - writePages[(r6+48)>>>12][((r6+48)>>>2)&0x3ff] = r2; - r2 = r0 + 3; - writePages[(r6+52)>>>12][((r6+52)>>>2)&0x3ff] = r2; - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r6 + 66; - writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r2; - r2 = r0 + 1; - writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r2; - writePages[(r6+56)>>>12][((r6+56)>>>2)&0x3ff] = r3; - r2 = r16 + r0; - r16 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x68d24: - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x68d30: - r3 = r3 + -1; - writePages[(r6+0)>>>12][((r6+0)>>>2)&0x3ff] = r3; - r3 = readPages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff]; - r3 = r3 + 1; - writePages[(r6+4)>>>12][((r6+4)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x68c74; - continue; - case 0x68e00: - pc=0x68e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_68e00() throws ExecutionException { /* 0x68e00 - 0x69000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x68e00: - r29 = r29 + -24; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r16 = r5 + r0; - r5 = readPages[(r5+48)>>>12][((r5+48)>>>2)&0x3ff]; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r31; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x68e68; - continue; - } - r2 = r16 + 64; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x68e30; - continue; - } - /* Next insn is delay slot */ - r31=0x68e30; - pc=0x3ca00; - run_3ca00(); return; - case 0x68e30: - r2 = readPages[(r16+60)>>>12][((r16+60)>>>2)&0x3ff]; - writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r0; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x68e68; - continue; - } - r2 = readPages[(r16+56)>>>12][((r16+56)>>>2)&0x3ff]; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r2 = r0 + r0; - case 0x68e54: - r31 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 24; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x68e68: - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r2 = r2 | 32; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x68e54; - continue; - case 0x69000: - pc=0x69000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_69000() throws ExecutionException { /* 0x69000 - 0x69200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x69000: - { long hilo = (r7) * r6; hi = (int) (hilo >>> 32); lo = (int) hilo; } - r29 = r29 + -56; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r21; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r23; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r22; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r16; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r20; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r19; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r18; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r17; - r22 = r6 + r0; - r21 = lo; - r23 = r7 + r0; - r16 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x6910c; - continue; - } - r20 = r4 + r0; - r19 = r5 + r0; - r18 = lo; - /* Next insn is delay slot */ - pc=0x69094; - continue; - case 0x69058: - r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x69064; - pc=0x48fdc; - run_48e00(); return; - case 0x69064: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r0; - r2 = r2 + r17; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r4 = r20 + r0; - r5 = r16 + r0; - r19 = r19 + r17; - r18 = r18 - r17; - /* Next insn is delay slot */ - r31=0x6908c; - pc=0x68e00; - run_68e00(); return; - case 0x6908c: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x69118; - continue; - } - case 0x69094: - r17 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r4 = r19 + r0; - r3 = ((r17 & 0xffffffffL) < (r18 & 0xffffffffL)) ? 1 : 0; - r5 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x69058; - continue; - } - r6 = r18 + r0; - /* Next insn is delay slot */ - r31=0x690b8; - pc=0x48fdc; - run_48e00(); return; - case 0x690b8: - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = r2 - r18; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r18 = r2 + r18; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r18; - r2 = r23 + r0; - case 0x690dc: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r23 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r22 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r21 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r20 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r19 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r18 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r17 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6910c: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x690dc; - continue; - case 0x69118: - r2 = r21 - r18; - if(r22 != r0) { - /* Next insn is delay slot */ - if(r22!=0) { - hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); - } - pc=0x69128; - continue; - } - if(r22!=0) { - hi = (int)((r2 & 0xffffffffL) % (r22 & 0xffffffffL)); lo = (int)((r2 & 0xffffffffL) / (r22 & 0xffffffffL)); - } - throw new ExecutionException("Break"); - case 0x69128: - r2 = lo; - /* Next insn is delay slot */ - pc=0x690dc; - continue; - case 0x69200: - pc=0x69200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_69200() throws ExecutionException { /* 0x69200 - 0x69400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x69200: - addr=r5+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r2 = tmp; - r29 = r29 + -416; - writePages[(r29+380)>>>12][((r29+380)>>>2)&0x3ff] = r17; - r17 = r4 + r0; - r4 = r2 & 8192; - writePages[(r29+408)>>>12][((r29+408)>>>2)&0x3ff] = r30; - writePages[(r29+376)>>>12][((r29+376)>>>2)&0x3ff] = r16; - writePages[(r29+412)>>>12][((r29+412)>>>2)&0x3ff] = r31; - writePages[(r29+404)>>>12][((r29+404)>>>2)&0x3ff] = r23; - writePages[(r29+400)>>>12][((r29+400)>>>2)&0x3ff] = r22; - writePages[(r29+396)>>>12][((r29+396)>>>2)&0x3ff] = r21; - writePages[(r29+392)>>>12][((r29+392)>>>2)&0x3ff] = r20; - writePages[(r29+388)>>>12][((r29+388)>>>2)&0x3ff] = r19; - writePages[(r29+384)>>>12][((r29+384)>>>2)&0x3ff] = r18; - r30 = r5 + r0; - r16 = r6 + r0; - writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r7; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x69264; - continue; - } - r2 = r2 | 8192; - r4 = readPages[(r5+100)>>>12][((r5+100)>>>2)&0x3ff]; - addr=r5+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 + -8193; - r2 = r4 & r2; - writePages[(r5+100)>>>12][((r5+100)>>>2)&0x3ff] = r2; - case 0x69264: - r19 = 7 << 16; - writePages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff] = r0; - r18 = r0 + r0; - r23 = r0 + r0; - writePages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff] = r0; - r19 = r19 + 4576; - case 0x6927c: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r16 = r16 + 1; - writePages[(r29+328)>>>12][((r29+328)>>>2)&0x3ff] = r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69484; - run_69400(); return; - } - case 0x69290: - r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - r4 = r5 + r2; - addr=r4+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r4 & 8; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x6932c; - continue; - } - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x69308; - continue; - } - case 0x692c0: - r4 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r5 + r2; - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r2 & 8; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6927c; - continue; - } - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r4 = r4 + 1; - r2 = r2 + -1; - r23 = r23 + 1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r4; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x692c0; - continue; - } - case 0x69308: - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x69318; - pc=0x68e00; - run_68e00(); return; - case 0x69318: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6927c; - continue; - } - r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x692c0; - continue; - case 0x6932c: - r4 = r0 + 37; - if(r2 != r4) { - /* Next insn is delay slot */ - pc=0x69500; - run_69400(); return; - } - r21 = r0 + r0; - r22 = r0 + r0; - case 0x69340: - r16 = r16 + 1; - addr=r16+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - r2 = r4 & 255; - r6 = (r2&0xffffffffL) < (121&0xffffffffL) ? 1 : 0; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x69374; - continue; - } - r2 = r2 << 2; - r2 = r19 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x69374: - r4 = r5 + r4; - addr=r4+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r2 = r0 + 1; - r4 = r4 & 3; - if(r4 != r2) { - /* Next insn is delay slot */ - pc=0x69390; - continue; - } - case 0x6938c: - r21 = r21 | 1; - case 0x69390: - r3 = 4 << 16; - r3 = r3 + 12800; - writePages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff] = r3; - r18 = r0 + 10; - r20 = r0 + 3; - case 0x693a4: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x6956c; - run_69400(); return; - } - case 0x693b4: - r2 = r21 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x694a8; - run_69400(); return; - } - case 0x693c0: - r2 = r0 + 2; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x69714; - run_69600(); return; - } - r2 = r0 + 3; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x696a0; - run_69600(); return; - } - r2 = r0 + 1; - if(r20 == r2) { - /* Next insn is delay slot */ - pc=0x695e0; - run_69400(); return; - } - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x693f0; - continue; - } - r22 = r0 + 1; - case 0x693f0: - r2 = r21 & 1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x69cd8; - run_69c00(); return; - } - r21 = r21 & 16; - case 0x69400: - pc=0x69400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_69400() throws ExecutionException { /* 0x69400 - 0x69600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x69400: - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x69e78; - run_69e00(); return; - } - r21 = r0 + r0; - /* Next insn is delay slot */ - pc=0x69440; - continue; - case 0x69414: - r4 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r21 = r21 + r2; - r22 = r22 - r2; - r2 = r4 + r2; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x69438; - pc=0x68e00; - run_68e00(); return; - case 0x69438: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x69fa4; - run_69e00(); return; - } - case 0x69440: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r4 = r2 < r22 ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x69414; - continue; - } - r2 = r2 - r22; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r21 = r21 + r22; - r9 = r2 + r22; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r9; - case 0x6946c: - r23 = r23 + r21; - case 0x69470: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r2 = tmp; - r16 = r16 + 1; - writePages[(r29+328)>>>12][((r29+328)>>>2)&0x3ff] = r2; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x69290; - run_69200(); return; - } - case 0x69484: - r2 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x695ac; - continue; - case 0x69490: - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x694a0; - pc=0x68e00; - run_68e00(); return; - case 0x694a0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x69584; - continue; - } - case 0x694a8: - r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x694c0; - continue; - case 0x694b8: - r2 = r2 + 1; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - case 0x694c0: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r5 + r4; - addr=r4+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r4 & 8; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x693c0; - run_69200(); return; - } - r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r23 = r23 + 1; - r4 = r4 + -1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; - if(r4 > 0) { - /* Next insn is delay slot */ - pc=0x694b8; - continue; - } - /* Next insn is delay slot */ - pc=0x69490; - continue; - case 0x69500: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x69fb8; - run_69e00(); return; - } - case 0x69510: - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - addr=r16+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r5 = tmp; - if(r5 != r4) { - /* Next insn is delay slot */ - pc=0x69484; - continue; - } - r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r2 = r2 + 1; - r4 = r4 + -1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - r23 = r23 + 1; - /* Next insn is delay slot */ - pc=0x6927c; - run_69200(); return; - case 0x69548: - r21 = r21 | 1; - case 0x6954c: - r3 = 6 << 16; - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r3 = r3 + -2048; - writePages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff] = r3; - r18 = r0 + 8; - r20 = r0 + 3; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x693b4; - run_69200(); return; - } - case 0x6956c: - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x6957c; - pc=0x68e00; - run_68e00(); return; - case 0x6957c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x693b4; - run_69200(); return; - } - case 0x69584: - r3 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x695a8; - continue; - } - addr=r30+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - r2 = r2 & 64; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69484; - continue; - } - case 0x695a8: - r2 = r0 + -1; - case 0x695ac: - r31 = readPages[(r29+412)>>>12][((r29+412)>>>2)&0x3ff]; - r30 = readPages[(r29+408)>>>12][((r29+408)>>>2)&0x3ff]; - r23 = readPages[(r29+404)>>>12][((r29+404)>>>2)&0x3ff]; - r22 = readPages[(r29+400)>>>12][((r29+400)>>>2)&0x3ff]; - r21 = readPages[(r29+396)>>>12][((r29+396)>>>2)&0x3ff]; - r20 = readPages[(r29+392)>>>12][((r29+392)>>>2)&0x3ff]; - r19 = readPages[(r29+388)>>>12][((r29+388)>>>2)&0x3ff]; - r18 = readPages[(r29+384)>>>12][((r29+384)>>>2)&0x3ff]; - r17 = readPages[(r29+380)>>>12][((r29+380)>>>2)&0x3ff]; - r16 = readPages[(r29+376)>>>12][((r29+376)>>>2)&0x3ff]; - r29 = r29 + 416; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x695e0: - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x695ec; - continue; - } - r22 = r0 + -1; - case 0x695ec: - r21 = r21 & 16; - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x69a10; - run_69a00(); return; - } - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r21 = r0 + r0; - case 0x69600: - pc=0x69600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_69600() throws ExecutionException { /* 0x69600 - 0x69800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x69600: - r10 = r29 + 24; - case 0x69604: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r10 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x6968c; - continue; - } - case 0x69620: - r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r2 = r2 + 1; - r4 = r4 + -1; - r21 = r21 + 1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - if(r22 == r21) { - /* Next insn is delay slot */ - pc=0x6946c; - run_69400(); return; - } - if(r4 > 0) { - /* Next insn is delay slot */ - pc=0x69604; - continue; - } - r4 = r17 + r0; - r5 = r30 + r0; - writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; - /* Next insn is delay slot */ - r31=0x6965c; - pc=0x68e00; - run_68e00(); return; - case 0x6965c: - r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6946c; - run_69400(); return; - } - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r10 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x69620; - continue; - } - case 0x6968c: - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x69484; - run_69400(); return; - } - r23 = r23 + r21; - /* Next insn is delay slot */ - pc=0x69470; - run_69400(); return; - case 0x696a0: - r2 = r22 + -1; - r2 = (r2&0xffffffffL) < (39&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69a00; - run_69a00(); return; - } - r13 = r0 + r0; - case 0x696b4: - r11 = r29 + 280; - r2 = 7 << 16; - r10 = r21 | 3456; - r12 = r0 + r0; - r21 = r11 + r0; - r14 = r0 + 512; - r7 = r2 + 5372; - case 0x696d0: - r6 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - addr=r6+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r2 = r4 + -43; - r2 = r2 & 255; - r5 = (r2&0xffffffffL) < (78&0xffffffffL) ? 1 : 0; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x69898; - run_69800(); return; - } - r3 = 7 << 16; - r2 = r2 << 2; - r3 = r3 + 5060; - r2 = r3 + r2; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=r2; - return; - case 0x69714: - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x697b0; - continue; - } - r2 = r21 & 1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x697c0; - continue; - } - case 0x69728: - r21 = r21 & 16; - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x69c10; - run_69c00(); return; - } - r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r21 = r0 + r0; - case 0x69740: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r5 + r4; - addr=r4+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r4 & 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x6946c; - run_69400(); return; - } - r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r2 = r2 + 1; - r4 = r4 + -1; - r21 = r21 + 1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - if(r22 == r21) { - /* Next insn is delay slot */ - pc=0x6946c; - run_69400(); return; - } - if(r4 > 0) { - /* Next insn is delay slot */ - pc=0x69740; - continue; - } - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x69798; - pc=0x68e00; - run_68e00(); return; - case 0x69798: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6946c; - run_69400(); return; - } - r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x69740; - continue; - case 0x697b0: - r2 = r21 & 1; - r22 = r0 + -1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69728; - continue; - } - case 0x697c0: - r4 = r29 + 320; - r5 = r0 + r0; - r6 = r0 + 8; - r20 = r21 & 16; - /* Next insn is delay slot */ - r31=0x697d8; - pc=0x48fec; - run_48e00(); return; - case 0x697d8: - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x69ed0; - run_69e00(); return; - } - r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; - r21 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = r3 + 4; - writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; - case 0x697f4: - r6 = r0 + r0; - case 0x697f8: - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r4 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - case 0x69800: - pc=0x69800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_69800() throws ExecutionException { /* 0x69800 - 0x69a00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x69800: - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r4 + r2; - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r2 & 8; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x69828; - continue; - } - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x69ff0; - run_69e00(); return; - } - case 0x69828: - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x6927c; - run_69200(); return; - } - writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r0; - case 0x69834: - r3 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; - r3 = r3 + 1; - writePages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x6927c; - run_69200(); return; - case 0x6984c: - r2 = r10 & 1536; - if(r2 != r14) { - /* Next insn is delay slot */ - pc=0x69898; - continue; - } - r2 = r0 + -513; - r10 = r10 & r2; - r10 = r10 | 1280; - r18 = r0 + 16; - case 0x69868: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - addr=r21+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r2 + -1; - r21 = r21 + 1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x69994; - continue; - } - case 0x69884: - r6 = r6 + 1; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r6; - case 0x6988c: - r22 = r22 + -1; - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x696d0; - run_69600(); return; - } - case 0x69898: - r2 = r10 & 256; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x698b8; - continue; - } - r2 = ((r11 & 0xffffffffL) < (r21 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x69f3c; - run_69e00(); return; - } - case 0x698b0: - if(r21 == r11) { - /* Next insn is delay slot */ - pc=0x69484; - run_69400(); return; - } - case 0x698b8: - r2 = r10 & 16; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69e04; - run_69e00(); return; - } - case 0x698c4: - r11 = r21 - r11; - r12 = r11 + r12; - r23 = r23 + r12; - /* Next insn is delay slot */ - pc=0x6927c; - run_69200(); return; - case 0x698d8: - r2 = r18 < 11 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x69898; - continue; - } - r2 = r0 + -2945; - r10 = r10 & r2; - /* Next insn is delay slot */ - pc=0x69868; - continue; - case 0x698f4: - r2 = r18 << 1; - r2 = r2 + r7; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r18 = tmp; - r2 = r18 < 9 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x69898; - continue; - } - r2 = r0 + -2945; - r10 = r10 & r2; - /* Next insn is delay slot */ - pc=0x69868; - continue; - case 0x69920: - r2 = r18 << 1; - r2 = r2 + r7; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r18 = tmp; - r2 = r0 + -2945; - r10 = r10 & r2; - /* Next insn is delay slot */ - pc=0x69868; - continue; - case 0x6993c: - r2 = r10 & 2048; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69868; - continue; - } - if(r18 != r0) { - /* Next insn is delay slot */ - pc=0x69958; - continue; - } - r10 = r10 | 512; - r18 = r0 + 8; - case 0x69958: - r2 = r10 & 1024; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x69ec0; - run_69e00(); return; - } - r2 = r0 + -897; - r10 = r10 & r2; - if(r13 == r0) { - /* Next insn is delay slot */ - pc=0x6997c; - continue; - } - r13 = r13 + -1; - r22 = r22 + 1; - case 0x6997c: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r12 = r12 + 1; - r2 = r2 + -1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r2; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x69884; - continue; - } - case 0x69994: - r4 = r17 + r0; - r5 = r30 + r0; - writePages[(r29+360)>>>12][((r29+360)>>>2)&0x3ff] = r7; - writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; - writePages[(r29+368)>>>12][((r29+368)>>>2)&0x3ff] = r11; - writePages[(r29+364)>>>12][((r29+364)>>>2)&0x3ff] = r12; - writePages[(r29+352)>>>12][((r29+352)>>>2)&0x3ff] = r13; - writePages[(r29+356)>>>12][((r29+356)>>>2)&0x3ff] = r14; - /* Next insn is delay slot */ - r31=0x699bc; - pc=0x68e00; - run_68e00(); return; - case 0x699bc: - r7 = readPages[(r29+360)>>>12][((r29+360)>>>2)&0x3ff]; - r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; - r11 = readPages[(r29+368)>>>12][((r29+368)>>>2)&0x3ff]; - r12 = readPages[(r29+364)>>>12][((r29+364)>>>2)&0x3ff]; - r13 = readPages[(r29+352)>>>12][((r29+352)>>>2)&0x3ff]; - r14 = readPages[(r29+356)>>>12][((r29+356)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6988c; - continue; - } - /* Next insn is delay slot */ - pc=0x69898; - continue; - case 0x699e4: - r2 = r10 & 128; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69898; - continue; - } - r2 = r0 + -129; - r10 = r10 & r2; - /* Next insn is delay slot */ - pc=0x69868; - continue; - case 0x69a00: - pc=0x69a00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_69a00() throws ExecutionException { /* 0x69a00 - 0x69c00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x69a00: - r13 = r22 + -39; - r22 = r0 + 39; - /* Next insn is delay slot */ - pc=0x696b4; - run_69600(); return; - case 0x69a10: - r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; - r10 = r29 + 24; - r3 = r3 + 4; - writePages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; - r21 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r20 = r21 + r0; - case 0x69a34: - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r10 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r4 = tmp; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x69abc; - continue; - } - r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r20 = r20 + 1; - r4 = r4 + -1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; - r4 = r2 + 1; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r22 = r22 + -1; - addr=r20+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x69abc; - continue; - } - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x69a34; - continue; - } - r4 = r17 + r0; - r5 = r30 + r0; - writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; - /* Next insn is delay slot */ - r31=0x69aa8; - pc=0x68e00; - run_68e00(); return; - case 0x69aa8: - r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69a34; - continue; - } - if(r21 == r20) { - /* Next insn is delay slot */ - pc=0x69584; - run_69400(); return; - } - case 0x69abc: - r21 = r20 - r21; - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x69484; - run_69400(); return; - } - r3 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; - addr=r20+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r3 = r3 + 1; - writePages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff]; - r23 = r23 + r21; - writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x69470; - run_69400(); return; - case 0x69aec: - r3 = 6 << 16; - r3 = r3 + -2048; - writePages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff] = r3; - r18 = r0 + 10; - r20 = r0 + 3; - /* Next insn is delay slot */ - pc=0x693a4; - run_69200(); return; - case 0x69b08: - r20 = r0 + 2; - /* Next insn is delay slot */ - pc=0x693a4; - run_69200(); return; - case 0x69b14: - r21 = r21 | 544; - case 0x69b18: - r3 = 6 << 16; - r3 = r3 + -2048; - writePages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff] = r3; - r18 = r0 + 16; - r20 = r0 + 3; - /* Next insn is delay slot */ - pc=0x693a4; - run_69200(); return; - case 0x69b34: - r2 = r21 & 16; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6927c; - run_69200(); return; - } - r2 = r21 & 4; - r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69fd8; - run_69e00(); return; - } - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = r3 + 4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r23&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x6927c; - run_69200(); return; - case 0x69b68: - r21 = r21 | 1; - /* Next insn is delay slot */ - pc=0x69340; - run_69200(); return; - case 0x69b74: - r3 = 4 << 16; - r3 = r3 + 12800; - writePages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff] = r3; - r18 = r0 + r0; - r20 = r0 + 3; - /* Next insn is delay slot */ - pc=0x693a4; - run_69200(); return; - case 0x69b90: - r21 = r21 | 4; - /* Next insn is delay slot */ - pc=0x69340; - run_69200(); return; - case 0x69b9c: - r21 = r21 | 64; - r20 = r0 + r0; - /* Next insn is delay slot */ - pc=0x693a4; - run_69200(); return; - case 0x69bac: - r5 = r16 + r0; - r4 = r29 + 24; - /* Next insn is delay slot */ - r31=0x69bbc; - pc=0x66800; - run_66800(); return; - case 0x69bbc: - r16 = r2 + r0; - r21 = r21 | 64; - r20 = r0 + 1; - /* Next insn is delay slot */ - pc=0x693a4; - run_69200(); return; - case 0x69bd0: - r21 = r21 | 512; - /* Next insn is delay slot */ - pc=0x69b18; - continue; - case 0x69bdc: - r21 = r21 | 2; - /* Next insn is delay slot */ - pc=0x69340; - run_69200(); return; - case 0x69be8: - r21 = r21 | 16; - /* Next insn is delay slot */ - pc=0x69340; - run_69200(); return; - case 0x69bf4: - r2 = r22 << 1; - r9 = r22 << 3; - r2 = r2 + r9; - case 0x69c00: - pc=0x69c00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_69c00() throws ExecutionException { /* 0x69c00 - 0x69e00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x69c00: - r4 = r4 + -48; - r22 = r4 + r2; - /* Next insn is delay slot */ - pc=0x69340; - run_69200(); return; - case 0x69c10: - r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; - r3 = r3 + 4; - writePages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; - r20 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r21 = r20 + r0; - case 0x69c34: - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r5 = readPages[(r28+-31060)>>>12][((r28+-31060)>>>2)&0x3ff]; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r5 + r4; - addr=r4+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r4 & 8; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x69cb0; - continue; - } - r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r21 = r21 + 1; - r4 = r4 + -1; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; - r4 = r2 + 1; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r22 = r22 + -1; - addr=r21+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r2&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r22 == r0) { - /* Next insn is delay slot */ - pc=0x69cb0; - continue; - } - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x69c34; - continue; - } - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x69ca8; - pc=0x68e00; - run_68e00(); return; - case 0x69ca8: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69c34; - continue; - } - case 0x69cb0: - r3 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; - r6 = r21 - r20; - r3 = r3 + 1; - writePages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff]; - addr=r21+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r23 = r23 + r6; - writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x6927c; - run_69200(); return; - case 0x69cd8: - r4 = r29 + 320; - r5 = r0 + r0; - r6 = r0 + 8; - r21 = r21 & 16; - /* Next insn is delay slot */ - r31=0x69cf0; - pc=0x48fec; - run_48e00(); return; - case 0x69cf0: - writePages[(r29+348)>>>12][((r29+348)>>>2)&0x3ff] = r21; - if(r21 != r0) { - /* Next insn is delay slot */ - pc=0x69f08; - run_69e00(); return; - } - r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - writePages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff] = r3; - r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; - r3 = r3 + 4; - writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; - case 0x69d20: - r21 = r0 + r0; - case 0x69d24: - /* Next insn is delay slot */ - r31=0x69d2c; - pc=0x5a800; - run_5a800(); return; - case 0x69d2c: - if(r2 == r21) { - /* Next insn is delay slot */ - pc=0x69584; - run_69400(); return; - } - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r3 = r29 + 24; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r6 = r3 + r21; - addr=r6+256; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - r4 = r4 + -1; - r2 = r29 + 320; - r20 = r21 + 1; - r5 = readPages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff]; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; - r6 = r29 + 280; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r4 = r17 + r0; - r7 = r20 + r0; - /* Next insn is delay slot */ - r31=0x69d80; - pc=0x66000; - run_66000(); return; - case 0x69d80: - r3 = r0 + -1; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x69584; - run_69400(); return; - } - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x69f80; - run_69e00(); return; - } - r3 = readPages[(r29+348)>>>12][((r29+348)>>>2)&0x3ff]; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x69db0; - continue; - } - r3 = readPages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff]; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r0; - case 0x69db0: - r3 = readPages[(r29+348)>>>12][((r29+348)>>>2)&0x3ff]; - r23 = r23 + r20; - r22 = r22 + -1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x69f98; - run_69e00(); return; - } - r3 = readPages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff]; - r21 = r0 + r0; - r3 = r3 + 4; - writePages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff] = r3; - case 0x69dd4: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 <= 0) { - /* Next insn is delay slot */ - pc=0x69f14; - run_69e00(); return; - } - case 0x69de4: - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x69d24; - continue; - } - case 0x69dec: - r3 = readPages[(r29+348)>>>12][((r29+348)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x69834; - run_69800(); return; - } - /* Next insn is delay slot */ - pc=0x6927c; - run_69200(); return; - case 0x69e00: - pc=0x69e00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_69e00() throws ExecutionException { /* 0x69e00 - 0x6a000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x69e00: - case 0x69e04: - r3 = readPages[(r29+344)>>>12][((r29+344)>>>2)&0x3ff]; - addr=r21+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r0&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r4 = r17 + r0; - r5 = r11 + r0; - writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; - writePages[(r29+368)>>>12][((r29+368)>>>2)&0x3ff] = r11; - writePages[(r29+364)>>>12][((r29+364)>>>2)&0x3ff] = r12; - r6 = r0 + r0; - r7 = r18 + r0; - /* Next insn is delay slot */ - pc=r3; - r31=0x69e30; - return; - case 0x69e30: - r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; - r11 = readPages[(r29+368)>>>12][((r29+368)>>>2)&0x3ff]; - r4 = r10 & 32; - r12 = readPages[(r29+364)>>>12][((r29+364)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x69edc; - continue; - } - case 0x69e48: - r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; - r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = r3 + 4; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; - writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; - case 0x69e60: - r3 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; - r3 = r3 + 1; - writePages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x698c4; - run_69800(); return; - case 0x69e78: - r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; - r4 = r17 + r0; - r5 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r6 = r0 + 1; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r30; - r7 = r22 + r0; - r21 = r3 + 4; - /* Next insn is delay slot */ - r31=0x69e9c; - pc=0x69000; - run_69000(); return; - case 0x69e9c: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69584; - run_69400(); return; - } - r3 = readPages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff]; - r23 = r2 + r23; - r3 = r3 + 1; - writePages[(r29+340)>>>12][((r29+340)>>>2)&0x3ff] = r3; - writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r21; - /* Next insn is delay slot */ - pc=0x6927c; - run_69200(); return; - case 0x69ec0: - r2 = r0 + -1409; - r10 = r10 & r2; - /* Next insn is delay slot */ - pc=0x69868; - run_69800(); return; - case 0x69ed0: - r21 = r29 + 328; - /* Next insn is delay slot */ - pc=0x697f4; - run_69600(); return; - case 0x69edc: - r4 = r10 & 4; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x69e48; - continue; - } - r3 = readPages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff]; - r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = r3 + 4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x69e60; - continue; - case 0x69f08: - writePages[(r29+336)>>>12][((r29+336)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=0x69d20; - run_69c00(); return; - case 0x69f14: - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x69f24; - pc=0x68e00; - run_68e00(); return; - case 0x69f24: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69de4; - run_69c00(); return; - } - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x69dec; - run_69c00(); return; - } - /* Next insn is delay slot */ - pc=0x69584; - run_69400(); return; - case 0x69f3c: - addr=r21+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - if((tmp&0x80)!=0) tmp |= 0xffffff00; /* sign extend */ - r5 = tmp; - r7 = r21 + -1; - r4 = r17 + r0; - r6 = r30 + r0; - writePages[(r29+360)>>>12][((r29+360)>>>2)&0x3ff] = r7; - writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; - writePages[(r29+368)>>>12][((r29+368)>>>2)&0x3ff] = r11; - writePages[(r29+364)>>>12][((r29+364)>>>2)&0x3ff] = r12; - /* Next insn is delay slot */ - r31=0x69f64; - pc=0x68c00; - run_68c00(); return; - case 0x69f64: - r7 = readPages[(r29+360)>>>12][((r29+360)>>>2)&0x3ff]; - r12 = readPages[(r29+364)>>>12][((r29+364)>>>2)&0x3ff]; - r21 = r7 + r0; - r11 = readPages[(r29+368)>>>12][((r29+368)>>>2)&0x3ff]; - r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x698b0; - run_69800(); return; - case 0x69f80: - r3 = r0 + -2; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x69db0; - run_69c00(); return; - } - r21 = r20 + r0; - /* Next insn is delay slot */ - pc=0x69dd4; - run_69c00(); return; - case 0x69f98: - r21 = r0 + r0; - /* Next insn is delay slot */ - pc=0x69dd4; - run_69c00(); return; - case 0x69fa4: - if(r21 == r0) { - /* Next insn is delay slot */ - pc=0x69584; - run_69400(); return; - } - r23 = r23 + r21; - /* Next insn is delay slot */ - pc=0x69470; - run_69400(); return; - case 0x69fb8: - r4 = r17 + r0; - r5 = r30 + r0; - /* Next insn is delay slot */ - r31=0x69fc8; - pc=0x68e00; - run_68e00(); return; - case 0x69fc8: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x69510; - run_69400(); return; - } - /* Next insn is delay slot */ - pc=0x69584; - run_69400(); return; - case 0x69fd8: - r2 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = r3 + 4; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r23; - writePages[(r29+428)>>>12][((r29+428)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x6927c; - run_69200(); return; - case 0x69ff0: - writePages[(r29+352)>>>12][((r29+352)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x69ffc; - pc=0x5a800; - run_5a800(); return; - case 0x69ffc: - r6 = readPages[(r29+352)>>>12][((r29+352)>>>2)&0x3ff]; - case 0x6a000: - pc=0x6a000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6a000() throws ExecutionException { /* 0x6a000 - 0x6a200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6a000: - if(r2 == r6) { - /* Next insn is delay slot */ - pc=0x69584; - run_69400(); return; - } - r2 = readPages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff]; - r3 = r29 + 24; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r10 = r6 + 1; - r6 = r3 + r6; - addr=r6+256; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r4 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r30+0)>>>12][((r30+0)>>>2)&0x3ff] = r2; - r4 = r4 + -1; - r2 = r29 + 320; - writePages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff] = r4; - r7 = r10 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r2; - r4 = r17 + r0; - r5 = r21 + r0; - r6 = r29 + 280; - writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; - /* Next insn is delay slot */ - r31=0x6a05c; - pc=0x66000; - run_66000(); return; - case 0x6a05c: - r3 = r0 + -1; - r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x69584; - run_69400(); return; - } - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6a0c4; - continue; - } - r3 = r0 + -2; - r6 = r10 + r0; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x6a154; - continue; - } - case 0x6a084: - r2 = readPages[(r30+4)>>>12][((r30+4)>>>2)&0x3ff]; - if(r2 > 0) { - /* Next insn is delay slot */ - pc=0x697f8; - run_69600(); return; - } - r4 = r17 + r0; - r5 = r30 + r0; - writePages[(r29+352)>>>12][((r29+352)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x6a0a8; - pc=0x68e00; - run_68e00(); return; - case 0x6a0a8: - r6 = readPages[(r29+352)>>>12][((r29+352)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x697f8; - run_69600(); return; - } - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x69584; - run_69400(); return; - } - /* Next insn is delay slot */ - pc=0x69828; - run_69800(); return; - case 0x6a0c4: - writePages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff] = r0; - r4 = r0 + r0; - case 0x6a0cc: - writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; - /* Next insn is delay slot */ - r31=0x6a0d8; - pc=0x65e00; - run_65e00(); return; - case 0x6a0d8: - r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6a128; - continue; - } - if(r10 == r0) { - /* Next insn is delay slot */ - pc=0x69828; - run_69800(); return; - } - case 0x6a0ec: - r10 = r10 + -1; - r3 = r29 + 280; - r2 = r3 + r10; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r5 = tmp; - r4 = r17 + r0; - r6 = r30 + r0; - writePages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff] = r10; - /* Next insn is delay slot */ - r31=0x6a110; - pc=0x68c00; - run_68c00(); return; - case 0x6a110: - r10 = readPages[(r29+372)>>>12][((r29+372)>>>2)&0x3ff]; - if(r10 != r0) { - /* Next insn is delay slot */ - pc=0x6a0ec; - continue; - } - /* Next insn is delay slot */ - pc=0x69828; - run_69800(); return; - case 0x6a128: - r23 = r23 + r10; - r22 = r22 + -1; - if(r20 != r0) { - /* Next insn is delay slot */ - pc=0x6a148; - continue; - } - r21 = r21 + 4; - r6 = r0 + r0; - /* Next insn is delay slot */ - pc=0x6a084; - continue; - case 0x6a148: - r6 = r0 + r0; - /* Next insn is delay slot */ - pc=0x6a084; - continue; - case 0x6a154: - r4 = readPages[(r21+0)>>>12][((r21+0)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x6a0cc; - continue; - case 0x6a200: - pc=0x6a200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6a200() throws ExecutionException { /* 0x6a200 - 0x6a400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6a200: - r29 = r29 + -40; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r16 = r5 + r0; - r5 = readPages[(r5+48)>>>12][((r5+48)>>>2)&0x3ff]; - r2 = r16 + 64; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r31; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r20; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r19; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x6a2a0; - continue; - } - r18 = readPages[(r16+52)>>>12][((r16+52)>>>2)&0x3ff]; - r19 = r18 << 1; - r6 = r19 + r0; - /* Next insn is delay slot */ - r31=0x6a248; - pc=0x40800; - run_40800(); return; - case 0x6a248: - r17 = r2 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6a30c; - continue; - } - r20 = r2 + r18; - r4 = r20 + r0; - r5 = r2 + r0; - r6 = r18 + r0; - /* Next insn is delay slot */ - r31=0x6a26c; - pc=0x48fdc; - run_48e00(); return; - case 0x6a26c: - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r20; - writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r17; - writePages[(r16+52)>>>12][((r16+52)>>>2)&0x3ff] = r19; - r2 = r0 + r0; - case 0x6a27c: - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6a2a0: - r5 = r0 + 1024; - /* Next insn is delay slot */ - r31=0x6a2ac; - pc=0x3ec00; - run_3ec00(); return; - case 0x6a2ac: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6a30c; - continue; - } - r3 = r0 + 1024; - writePages[(r16+52)>>>12][((r16+52)>>>2)&0x3ff] = r3; - addr=r16+66; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r2; - addr=r2+1023; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r16+65; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r2 = r2 + 1021; - addr=r2+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r16+64; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r3&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r31 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r20 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r19 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r2 = r0 + r0; - r29 = r29 + 40; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6a30c: - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x6a27c; - continue; - case 0x6a400: - pc=0x6a400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6a400() throws ExecutionException { /* 0x6a400 - 0x6a600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6a400: - r29 = r29 + -32; - r2 = r0 + -1; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r18; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r31; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r17; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r16; - r18 = r5 + r0; - if(r5 == r2) { - /* Next insn is delay slot */ - pc=0x6a52c; - continue; - } - r17 = r4 + r0; - r16 = r6 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x6a444; - continue; - } - r2 = readPages[(r4+56)>>>12][((r4+56)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6a538; - continue; - } - case 0x6a444: - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - if((tmp&0x8000)!=0) tmp |= 0xffff0000; /* sign extend */ - r2 = tmp; - r3 = r2 & 8192; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6a46c; - continue; - } - r4 = readPages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff]; - r3 = r0 + -8193; - r3 = r4 & r3; - r2 = r2 | 8192; - writePages[(r16+100)>>>12][((r16+100)>>>2)&0x3ff] = r3; - case 0x6a46c: - r3 = r0 + -33; - r2 = r2 & r3; - r3 = r2 & 65535; - r4 = r3 & 4; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x6a4a8; - continue; - } - r4 = r3 & 16; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x6a52c; - continue; - } - r3 = r3 & 8; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6a548; - continue; - } - r2 = r2 | 4; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - case 0x6a4a8: - r2 = readPages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff]; - r18 = r18 & 255; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6a588; - continue; - } - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = readPages[(r16+52)>>>12][((r16+52)>>>2)&0x3ff]; - r2 = r3 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6a514; - continue; - } - case 0x6a4d0: - r2 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - r3 = r2 + -1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; - addr=r2+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r2 = r2 + 1; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - r2 = r18 + r0; - case 0x6a4f8: - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6a514: - r4 = r17 + r0; - r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x6a524; - pc=0x6a200; - run_6a200(); return; - case 0x6a524: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6a4d0; - continue; - } - case 0x6a52c: - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x6a4f8; - continue; - case 0x6a538: - /* Next insn is delay slot */ - r31=0x6a540; - pc=0x3a600; - run_3a600(); return; - case 0x6a540: - /* Next insn is delay slot */ - pc=0x6a444; - continue; - case 0x6a548: - r4 = r17 + r0; - r5 = r16 + r0; - /* Next insn is delay slot */ - r31=0x6a558; - pc=0x39800; - run_39800(); return; - case 0x6a558: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6a52c; - continue; - } - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&2)<<3)) & 0xffff; - r2 = tmp; - writePages[(r16+8)>>>12][((r16+8)>>>2)&0x3ff] = r0; - r2 = r2 & 65527; - r2 = r2 << 16; - r2 = r2 >> 16; - r2 = r2 | 4; - writePages[(r16+24)>>>12][((r16+24)>>>2)&0x3ff] = r0; - addr=r16+12; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&(0xffff<<((addr&2)<<3)))|((r2&0xffff)<<(((~addr)&2)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - /* Next insn is delay slot */ - pc=0x6a4a8; - continue; - case 0x6a588: - r2 = readPages[(r16+16)>>>12][((r16+16)>>>2)&0x3ff]; - r3 = readPages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6a5b4; - continue; - } - r2 = ((r2 & 0xffffffffL) < (r3 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6a5b4; - continue; - } - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r2 == r18) { - /* Next insn is delay slot */ - pc=0x6a604; - run_6a600(); return; - } - case 0x6a5b4: - r2 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - addr=r16+66; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r18&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - writePages[(r16+60)>>>12][((r16+60)>>>2)&0x3ff] = r2; - r2 = r16 + 64; - writePages[(r16+48)>>>12][((r16+48)>>>2)&0x3ff] = r2; - r2 = r0 + 3; - writePages[(r16+52)>>>12][((r16+52)>>>2)&0x3ff] = r2; - r31 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r2 = r16 + 66; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r2 = r0 + 1; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r2; - writePages[(r16+56)>>>12][((r16+56)>>>2)&0x3ff] = r3; - r2 = r18 + r0; - r17 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r18 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r16 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r29 = r29 + 32; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6a600: - pc=0x6a600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6a600() throws ExecutionException { /* 0x6a600 - 0x6a800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6a600: - case 0x6a604: - r3 = r3 + -1; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r3; - r3 = readPages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff]; - r3 = r3 + 1; - writePages[(r16+4)>>>12][((r16+4)>>>2)&0x3ff] = r3; - /* Next insn is delay slot */ - pc=0x6a4f8; - run_6a400(); return; - case 0x6a800: - pc=0x6a800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6a800() throws ExecutionException { /* 0x6a800 - 0x6aa00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6a800: - r2 = r4 + r0; - r4 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r6 = r5 + r0; - r5 = r2 + r0; - /* Next insn is delay slot */ - pc=0x6a400; - run_6a400(); return; - case 0x6aa00: - pc=0x6aa00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6aa00() throws ExecutionException { /* 0x6aa00 - 0x6ac00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6aa00: - r29 = r29 + -64; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r18; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r17; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r16; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - r16 = r4 + r0; - r17 = r7 + r0; - r18 = readPages[(r28+-30856)>>>12][((r28+-30856)>>>2)&0x3ff]; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x6aa8c; - continue; - } - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r5; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x6aa38; - pc=0x5a600; - run_5a600(); return; - case 0x6aa38: - r5 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r6 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r17; - r4 = r16 + r0; - r7 = r2 + r0; - /* Next insn is delay slot */ - pc=r18; - r31=0x6aa54; - return; - case 0x6aa54: - r3 = r0 + -1; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x6aa70; - continue; - } - r2 = r0 + 138; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r0; - writePages[(r16+0)>>>12][((r16+0)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - case 0x6aa70: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r18 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r17 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r16 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6aa8c: - /* Next insn is delay slot */ - r31=0x6aa94; - pc=0x5a600; - run_5a600(); return; - case 0x6aa94: - r7 = r2 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r17; - r4 = r16 + r0; - r5 = r29 + 24; - r6 = r0 + r0; - /* Next insn is delay slot */ - pc=r18; - r31=0x6aab0; - return; - case 0x6aab0: - /* Next insn is delay slot */ - pc=0x6aa54; - continue; - case 0x6ac00: - pc=0x6ac00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6ac00() throws ExecutionException { /* 0x6ac00 - 0x6ae00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6ac00: - r29 = r29 + -64; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r17; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r16; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r31; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r20; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r19; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r18; - r16 = r4 + r0; - r17 = r6 + r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x6aca0; - continue; - } - r20 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r18 = r5 + r0; - r19 = readPages[(r28+-30856)>>>12][((r28+-30856)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x6ac40; - pc=0x5a600; - run_5a600(); return; - case 0x6ac40: - r7 = r2 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r17; - r4 = r20 + r0; - r5 = r16 + r0; - r6 = r18 + r0; - /* Next insn is delay slot */ - pc=r19; - r31=0x6ac5c; - return; - case 0x6ac5c: - r3 = r0 + -1; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x6ac7c; - continue; - } - r2 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r3 = r0 + 138; - writePages[(r17+0)>>>12][((r17+0)>>>2)&0x3ff] = r0; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r2 = r0 + -1; - case 0x6ac7c: - r31 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r20 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r19 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r18 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r17 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r16 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r29 = r29 + 64; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6aca0: - r18 = readPages[(r28+-31072)>>>12][((r28+-31072)>>>2)&0x3ff]; - r16 = readPages[(r28+-30856)>>>12][((r28+-30856)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x6acb0; - pc=0x5a600; - run_5a600(); return; - case 0x6acb0: - r7 = r2 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r17; - r4 = r18 + r0; - r5 = r29 + 24; - r6 = r0 + r0; - /* Next insn is delay slot */ - pc=r16; - r31=0x6accc; - return; - case 0x6accc: - /* Next insn is delay slot */ - pc=0x6ac5c; - continue; - case 0x6ae00: - pc=0x6ae00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6ae00() throws ExecutionException { /* 0x6ae00 - 0x6b000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6ae00: - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x6ae24; - continue; - } - r2 = (r6&0xffffffffL) < (256&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6ae30; - continue; - } - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r6&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - r2 = r0 + 1; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6ae24: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6ae30: - r2 = r0 + 138; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r2; - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6b000: - pc=0x6b000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6b000() throws ExecutionException { /* 0x6b000 - 0x6b200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6b000: - r29 = r29 + -56; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r31; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r17; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r16; - r17 = r7 + r0; - r16 = readPages[(r28+-30856)>>>12][((r28+-30856)>>>2)&0x3ff]; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r4; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r5; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x6b02c; - pc=0x5a600; - run_5a600(); return; - case 0x6b02c: - r4 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r5 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r6 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r17; - r7 = r2 + r0; - /* Next insn is delay slot */ - pc=r16; - r31=0x6b048; - return; - case 0x6b048: - r31 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r17 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r16 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r29 = r29 + 56; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6b200: - pc=0x6b200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6b200() throws ExecutionException { /* 0x6b200 - 0x6b400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6b200: - r7 = readPages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff]; - r2 = r5 >> 5; - r6 = r2 < r7 ? 1 : 0; - r3 = r4 + 20; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x6b2bc; - continue; - } - r7 = r7 << 2; - r2 = r2 << 2; - r5 = r5 & 31; - r7 = r3 + r7; - r11 = r3 + r2; - if(r5 == r0) { - /* Next insn is delay slot */ - pc=0x6b2cc; - continue; - } - r2 = r11 + 4; - r8 = readPages[(r11+0)>>>12][((r11+0)>>>2)&0x3ff]; - r10 = r0 + 32; - r6 = ((r2 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; - r10 = r10 - r5; - r8 = r8 >>> (r5&0x1f); - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x6b324; - continue; - } - r6 = r3 + r0; - case 0x6b258: - r9 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r6 = r6 + 4; - r9 = r9 << (r10&0x1f); - r8 = r8 | r9; - r2 = r2 + 4; - writePages[(r6+-4)>>>12][((r6+-4)>>>2)&0x3ff] = r8; - r8 = readPages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff]; - r9 = ((r2 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; - r8 = r8 >>> (r5&0x1f); - if(r9 != r0) { - /* Next insn is delay slot */ - pc=0x6b258; - continue; - } - r2 = r7 - r11; - r2 = r2 + -5; - r2 = r2 >>> 2; - r2 = r2 + 1; - r2 = r2 << 2; - r2 = r3 + r2; - case 0x6b29c: - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r8; - if(r8 == r0) { - /* Next insn is delay slot */ - pc=0x6b2ac; - continue; - } - r2 = r2 + 4; - case 0x6b2ac: - r3 = r2 - r3; - r3 = r3 >> 2; - /* Next insn is delay slot */ - pc=0x6b310; - continue; - case 0x6b2bc: - writePages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff] = r0; - case 0x6b2c0: - writePages[(r4+20)>>>12][((r4+20)>>>2)&0x3ff] = r0; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6b2cc: - r2 = ((r11 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6b2bc; - continue; - } - r2 = r11 + r0; - case 0x6b2dc: - r2 = r2 + 4; - r5 = readPages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff]; - r3 = r3 + 4; - writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r5; - r5 = ((r2 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x6b2dc; - continue; - } - r3 = ~(r0 | r11); - r3 = r3 + r7; - r3 = r3 >>> 2; - r3 = r3 + 1; - r3 = r3 << 2; - r3 = r3 >> 2; - case 0x6b310: - writePages[(r4+16)>>>12][((r4+16)>>>2)&0x3ff] = r3; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x6b2c0; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6b324: - r2 = r3 + r0; - /* Next insn is delay slot */ - pc=0x6b29c; - continue; - case 0x6b400: - pc=0x6b400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6b400() throws ExecutionException { /* 0x6b400 - 0x6b600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6b400: - r5 = 7 << 16; - r2 = 7 << 16; - r5 = r5 + 5425; - r4 = r0 + 16; - r3 = r0 + 48; - r2 = r2 + 30712; - case 0x6b418: - r3 = r2 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r4 = r4 + 1; - r4 = r4 & 255; - r5 = r5 + 1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6b418; - continue; - } - r5 = 7 << 16; - r5 = r5 + 5417; - r4 = r0 + 26; - r3 = r0 + 97; - case 0x6b448: - r3 = r2 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r4 = r4 + 1; - r4 = r4 & 255; - r5 = r5 + 1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6b448; - continue; - } - r5 = 7 << 16; - r5 = r5 + 5409; - r4 = r0 + 26; - r3 = r0 + 65; - case 0x6b478: - r3 = r2 + r3; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp&~(0xff000000>>>((addr&3)<<3)))|((r4&0xff)<<(((~addr)&3)<<3)); - writePages[(addr)>>>12][((addr)>>>2)&0x3ff] = tmp; - addr=r5+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r4 = r4 + 1; - r4 = r4 & 255; - r5 = r5 + 1; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6b478; - continue; - } - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6b600: - pc=0x6b600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6b600() throws ExecutionException { /* 0x6b600 - 0x6b800 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6b600: - r29 = r29 + -88; - writePages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff] = r31; - writePages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff] = r21; - writePages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff] = r20; - writePages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff] = r19; - writePages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff] = r18; - writePages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff] = r17; - writePages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff] = r4; - r19 = r5 + r0; - writePages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff] = r6; - writePages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff] = r7; - writePages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff] = r30; - writePages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff] = r23; - writePages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff] = r22; - writePages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff] = r16; - /* Next insn is delay slot */ - r31=0x6b644; - pc=0x5ae00; - run_5ae00(); return; - case 0x6b644: - r17 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r4 = r17 + r0; - /* Next insn is delay slot */ - r31=0x6b658; - pc=0x10268; - run_10200(); return; - case 0x6b658: - r9 = 7 << 16; - r18 = r2 + r0; - r20 = r9 + 30712; - r2 = r17 + r2; - addr=r2+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r21 = tmp; - addr=r20+48; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6bb30; - run_6ba00(); return; - } - case 0x6b67c: - r3 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; - r2 = r0 + 48; - addr=r3+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r8 = tmp; - r23 = r3 + 2; - if(r8 != r2) { - /* Next insn is delay slot */ - pc=0x6be30; - run_6be00(); return; - } - r3 = r3 + 3; - r22 = r0 + r0; - case 0x6b69c: - r23 = r3 + r0; - r3 = r3 + 1; - addr=r3+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r8 = tmp; - r22 = r22 + 1; - if(r8 == r2) { - /* Next insn is delay slot */ - pc=0x6b69c; - continue; - } - case 0x6b6b4: - r8 = r20 + r8; - addr=r8+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6baac; - run_6ba00(); return; - } - addr=r23+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r7 = r0 + r0; - r2 = r2 + r20; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r30 = r0 + r0; - case 0x6b6dc: - r16 = r23 + r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x6b708; - continue; - } - case 0x6b6e8: - r16 = r16 + 1; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r2 = r20 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6b6e8; - continue; - } - case 0x6b708: - r4 = r16 + r0; - r5 = r17 + r0; - r6 = r18 + r0; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r7; - /* Next insn is delay slot */ - r31=0x6b720; - pc=0x43000; - run_43000(); return; - case 0x6b720: - r7 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6b7a8; - continue; - } - if(r30 == r0) { - /* Next insn is delay slot */ - pc=0x6be6c; - run_6be00(); return; - } - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - case 0x6b738: - r30 = r30 - r16; - r30 = r30 << 2; - case 0x6b740: - r3 = r0 + 80; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x6b7c0; - continue; - } - case 0x6b74c: - r3 = r0 + 112; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x6b7c0; - continue; - } - case 0x6b758: - r2 = r16 + r0; - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x6b868; - run_6b800(); return; - } - case 0x6b768: - if(r22 != r0) { - /* Next insn is delay slot */ - pc=0x6bd74; - run_6bc00(); return; - } - r2 = r0 + 6; - case 0x6b774: - r31 = readPages[(r29+84)>>>12][((r29+84)>>>2)&0x3ff]; - r30 = readPages[(r29+80)>>>12][((r29+80)>>>2)&0x3ff]; - r23 = readPages[(r29+76)>>>12][((r29+76)>>>2)&0x3ff]; - r22 = readPages[(r29+72)>>>12][((r29+72)>>>2)&0x3ff]; - r21 = readPages[(r29+68)>>>12][((r29+68)>>>2)&0x3ff]; - r20 = readPages[(r29+64)>>>12][((r29+64)>>>2)&0x3ff]; - r19 = readPages[(r29+60)>>>12][((r29+60)>>>2)&0x3ff]; - r18 = readPages[(r29+56)>>>12][((r29+56)>>>2)&0x3ff]; - r17 = readPages[(r29+52)>>>12][((r29+52)>>>2)&0x3ff]; - r16 = readPages[(r29+48)>>>12][((r29+48)>>>2)&0x3ff]; - r29 = r29 + 88; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6b7a8: - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r30 != r0) { - /* Next insn is delay slot */ - pc=0x6b738; - continue; - } - r3 = r0 + 80; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x6b74c; - continue; - } - case 0x6b7c0: - addr=r16+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r3 = r0 + 43; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x6bd80; - run_6bc00(); return; - } - r3 = r0 + 45; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x6bcfc; - run_6bc00(); return; - } - r4 = r16 + 1; - r6 = r0 + r0; - case 0x6b7e4: - r2 = r20 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - r2 = r3 + -1; - r2 = (r2&0xffffffffL) < (25&0xffffffffL) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6b758; - continue; - } - case 0x6b800: - pc=0x6b800; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6b800() throws ExecutionException { /* 0x6b800 - 0x6ba00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6b800: - r2 = r4 + 1; - r3 = r3 + -16; - addr=r4+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - /* Next insn is delay slot */ - pc=0x6b830; - continue; - case 0x6b814: - r5 = r3 << 1; - r3 = r3 << 3; - r3 = r5 + r3; - r2 = r2 + 1; - r3 = r3 + r4; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r3 = r3 + -16; - case 0x6b830: - r4 = r4 + r20; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r5 = r4 + -1; - r5 = (r5&0xffffffffL) < (25&0xffffffffL) ? 1 : 0; - if(r5 != r0) { - /* Next insn is delay slot */ - pc=0x6b814; - continue; - } - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x6b858; - continue; - } - r3 = r0 - r3; - case 0x6b858: - r30 = r30 + r3; - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x6b768; - run_6b600(); return; - } - case 0x6b868: - r2 = r16 - r23; - r2 = r2 + -1; - r3 = r2 < 8 ? 1 : 0; - r5 = r0 + r0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6b894; - continue; - } - case 0x6b880: - r2 = r2 >> 1; - r3 = r2 < 8 ? 1 : 0; - r5 = r5 + 1; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x6b880; - continue; - } - case 0x6b894: - r4 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x6b8a0; - pc=0x5b800; - run_5b800(); return; - case 0x6b8a0: - r19 = r2 + 20; - r22 = r2 + r0; - r2 = ((r23 & 0xffffffffL) < (r16 & 0xffffffffL)) ? 1 : 0; - r11 = r19 + r0; - r8 = r0 + r0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6b9a0; - continue; - } - addr=r16+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r6 = tmp; - r14 = r0 + 1; - r3 = r0 + r0; - r14 = r14 - r18; - r12 = r0 + 32; - r7 = r16 + -1; - if(r6 == r21) { - /* Next insn is delay slot */ - pc=0x6b92c; - continue; - } - case 0x6b8dc: - if(r3 == r12) { - /* Next insn is delay slot */ - pc=0x6ba90; - run_6ba00(); return; - } - r2 = r3 + r0; - r3 = r3 + 4; - case 0x6b8ec: - addr=r16+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r4 = tmp; - r4 = r20 + r4; - addr=r4+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r6 = tmp; - r6 = r6 & 15; - r6 = r6 << (r2&0x1f); - r8 = r8 | r6; - r6 = ((r23 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; - if(r6 == r0) { - /* Next insn is delay slot */ - pc=0x6b9a0; - continue; - } - case 0x6b918: - r16 = r7 + r0; - addr=r16+-1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r6 = tmp; - r7 = r16 + -1; - if(r6 != r21) { - /* Next insn is delay slot */ - pc=0x6b8dc; - continue; - } - case 0x6b92c: - r15 = r7 + r14; - r2 = ((r15 & 0xffffffffL) < (r23 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6b8dc; - continue; - } - r4 = r15 + r0; - r5 = r17 + r0; - r6 = r18 + r0; - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r3; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r7; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r8; - writePages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff] = r11; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r12; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r14; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r15; - /* Next insn is delay slot */ - r31=0x6b96c; - pc=0x43000; - run_43000(); return; - case 0x6b96c: - r3 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - r7 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r8 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r11 = readPages[(r29+28)>>>12][((r29+28)>>>2)&0x3ff]; - r12 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r14 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r15 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6b8dc; - continue; - } - r7 = r15 + r0; - r6 = ((r23 & 0xffffffffL) < (r7 & 0xffffffffL)) ? 1 : 0; - if(r6 != r0) { - /* Next insn is delay slot */ - pc=0x6b918; - continue; - } - case 0x6b9a0: - r2 = r11 + 4; - r2 = r2 - r19; - r2 = r2 >> 2; - writePages[(r11+0)>>>12][((r11+0)>>>2)&0x3ff] = r8; - r4 = r8 + r0; - writePages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff] = r2; - r16 = r2 << 5; - /* Next insn is delay slot */ - r31=0x6b9c4; - pc=0x5c000; - run_5c000(); return; - case 0x6b9c4: - r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r2 = r16 - r2; - r16 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r3 = r16 < r2 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6bd8c; - run_6bc00(); return; - } - r3 = r2 < r16 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6be00; - run_6be00(); return; - } - r17 = r0 + r0; - case 0x6b9f0: - r4 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r3 = readPages[(r4+8)>>>12][((r4+8)>>>2)&0x3ff]; - case 0x6ba00: - pc=0x6ba00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6ba00() throws ExecutionException { /* 0x6ba00 - 0x6bc00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6ba00: - r3 = r3 < r30 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6bcd4; - run_6bc00(); return; - } - r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r3 = r30 < r2 ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x6bd28; - run_6bc00(); return; - } - r30 = r2 - r30; - r3 = r30 < r16 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6bb40; - continue; - } - r4 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r3 = readPages[(r4+12)>>>12][((r4+12)>>>2)&0x3ff]; - r4 = r0 + 2; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x6bf1c; - run_6be00(); return; - } - r4 = r0 + 3; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x6becc; - run_6be00(); return; - } - r4 = r0 + 1; - if(r3 == r4) { - /* Next insn is delay slot */ - pc=0x6bf34; - run_6be00(); return; - } - case 0x6ba68: - r4 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r5 = r22 + r0; - /* Next insn is delay slot */ - r31=0x6ba78; - pc=0x5ba00; - run_5ba00(); return; - case 0x6ba78: - r2 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - r2 = r0 + 80; - /* Next insn is delay slot */ - pc=0x6b774; - run_6b600(); return; - case 0x6ba90: - writePages[(r11+0)>>>12][((r11+0)>>>2)&0x3ff] = r8; - r3 = r0 + 4; - r11 = r11 + 4; - r8 = r0 + r0; - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x6b8ec; - run_6b800(); return; - case 0x6baac: - r4 = r23 + r0; - r5 = r17 + r0; - r6 = r18 + r0; - /* Next insn is delay slot */ - r31=0x6bac0; - pc=0x43000; - run_43000(); return; - case 0x6bac0: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6bd10; - run_6bc00(); return; - } - r16 = r23 + r18; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r3 = r2 + r20; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x6be3c; - run_6be00(); return; - } - r4 = r0 + 48; - r23 = r16 + r0; - if(r2 != r4) { - /* Next insn is delay slot */ - pc=0x6bb1c; - continue; - } - r3 = r0 + 48; - case 0x6bafc: - r23 = r23 + 1; - addr=r23+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x6bafc; - continue; - } - r2 = r20 + r2; - addr=r2+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - case 0x6bb1c: - r7 = (r3&0xffffffffL) < (1&0xffffffffL) ? 1 : 0; - r30 = r16 + r0; - r22 = r0 + 1; - /* Next insn is delay slot */ - pc=0x6b6dc; - run_6b600(); return; - case 0x6bb30: - /* Next insn is delay slot */ - r31=0x6bb38; - pc=0x6b400; - run_6b400(); return; - case 0x6bb38: - /* Next insn is delay slot */ - pc=0x6b67c; - run_6b600(); return; - case 0x6bb40: - r18 = r30 + -1; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x6bec0; - run_6be00(); return; - } - if(r18 <= 0) { - /* Next insn is delay slot */ - pc=0x6bb68; - continue; - } - r4 = r22 + r0; - r5 = r18 + r0; - /* Next insn is delay slot */ - r31=0x6bb64; - pc=0x5de00; - run_5de00(); return; - case 0x6bb64: - r17 = r2 + r0; - case 0x6bb68: - r2 = r18 >> 5; - r2 = r2 << 2; - r2 = r19 + r2; - r3 = r0 + 1; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r18 = r3 << (r18&0x1f); - r2 = r18 & r2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6bb90; - continue; - } - r17 = r17 | 2; - case 0x6bb90: - r5 = r30 + r0; - r4 = r22 + r0; - /* Next insn is delay slot */ - r31=0x6bba0; - pc=0x6b200; - run_6b200(); return; - case 0x6bba0: - r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r16 = r16 - r30; - r30 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - r18 = r0 + 2; - case 0x6bbb0: - if(r17 == r0) { - /* Next insn is delay slot */ - pc=0x6bd58; - run_6bc00(); return; - } - r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r2 = readPages[(r3+12)>>>12][((r3+12)>>>2)&0x3ff]; - r3 = r0 + 2; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x6bd34; - run_6bc00(); return; - } - r3 = r0 + 3; - if(r2 == r3) { - /* Next insn is delay slot */ - pc=0x6bd44; - run_6bc00(); return; - } - r3 = r0 + 1; - if(r2 != r3) { - /* Next insn is delay slot */ - pc=0x6bd54; - run_6bc00(); return; - } - r2 = r17 & 2; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6bd54; - run_6bc00(); return; - } - r2 = readPages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff]; - r2 = r17 | r2; - case 0x6bc00: - pc=0x6bc00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6bc00() throws ExecutionException { /* 0x6bc00 - 0x6be00 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6bc00: - r2 = r2 & 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6bd54; - continue; - } - case 0x6bc0c: - r17 = readPages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff]; - r3 = r19 + r0; - r23 = r17 << 2; - r5 = r19 + r23; - r2 = r0 + -1; - /* Next insn is delay slot */ - pc=0x6bc3c; - continue; - case 0x6bc28: - r3 = r3 + 4; - r4 = ((r3 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - writePages[(r3+-4)>>>12][((r3+-4)>>>2)&0x3ff] = r0; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x6bf74; - run_6be00(); return; - } - case 0x6bc3c: - r4 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - if(r4 == r2) { - /* Next insn is delay slot */ - pc=0x6bc28; - continue; - } - r4 = r4 + 1; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r4; - r2 = r19 + r0; - case 0x6bc58: - r3 = r0 + 2; - if(r18 == r3) { - /* Next insn is delay slot */ - pc=0x6bfb4; - run_6be00(); return; - } - r3 = readPages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff]; - r17 = r17 < r3 ? 1 : 0; - if(r17 != r0) { - /* Next insn is delay slot */ - pc=0x6bca8; - continue; - } - r16 = r16 & 31; - if(r16 == r0) { - /* Next insn is delay slot */ - pc=0x6bf04; - run_6be00(); return; - } - r2 = r2 + r23; - r4 = readPages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - r31=0x6bc94; - pc=0x5c000; - run_5c000(); return; - case 0x6bc94: - r3 = r0 + 32; - r16 = r3 - r16; - r2 = r2 < r16 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6bf04; - run_6be00(); return; - } - case 0x6bca8: - r4 = r22 + r0; - r5 = r0 + 1; - /* Next insn is delay slot */ - r31=0x6bcb8; - pc=0x6b200; - run_6b200(); return; - case 0x6bcb8: - r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r30 = r30 + 1; - r2 = readPages[(r3+8)>>>12][((r3+8)>>>2)&0x3ff]; - r2 = r2 < r30 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6bf04; - run_6be00(); return; - } - case 0x6bcd4: - r4 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r5 = r22 + r0; - /* Next insn is delay slot */ - r31=0x6bce4; - pc=0x5ba00; - run_5ba00(); return; - case 0x6bce4: - r2 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r0; - r2 = r0 + 163; - /* Next insn is delay slot */ - pc=0x6b774; - run_6b600(); return; - case 0x6bcfc: - r6 = r0 + 1; - case 0x6bd00: - r4 = r16 + 2; - addr=r16+2; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - /* Next insn is delay slot */ - pc=0x6b7e4; - run_6b600(); return; - case 0x6bd10: - addr=r23+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r16 = r23 + r0; - r30 = r0 + r0; - r7 = r0 + 1; - /* Next insn is delay slot */ - pc=0x6b740; - run_6b600(); return; - case 0x6bd28: - r18 = r0 + 1; - /* Next insn is delay slot */ - pc=0x6bbb0; - run_6ba00(); return; - case 0x6bd34: - r4 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; - r2 = r0 + 1; - r4 = r2 - r4; - writePages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff] = r4; - case 0x6bd44: - r2 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6bc0c; - continue; - } - case 0x6bd54: - r18 = r18 | 16; - case 0x6bd58: - r4 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - r3 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r22; - r2 = r18 + r0; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r30; - /* Next insn is delay slot */ - pc=0x6b774; - run_6b600(); return; - case 0x6bd74: - r2 = r0 + r0; - /* Next insn is delay slot */ - pc=0x6b774; - run_6b600(); return; - case 0x6bd80: - r6 = r0 + r0; - /* Next insn is delay slot */ - pc=0x6bd00; - continue; - case 0x6bd8c: - r18 = r2 - r16; - r4 = r22 + r0; - r5 = r18 + r0; - /* Next insn is delay slot */ - r31=0x6bda0; - pc=0x5de00; - run_5de00(); return; - case 0x6bda0: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6be4c; - run_6be00(); return; - } - r2 = r18 + -1; - r3 = r2 >> 5; - r3 = r3 << 2; - r3 = r19 + r3; - r4 = r0 + 1; - r3 = readPages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff]; - r4 = r4 << (r2&0x1f); - r3 = r4 & r3; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x6beb4; - run_6be00(); return; - } - r2 = r2 < 2 ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6bf10; - run_6be00(); return; - } - r4 = r22 + r0; - r5 = r18 + -2; - /* Next insn is delay slot */ - r31=0x6bdec; - pc=0x5de00; - run_5de00(); return; - case 0x6bdec: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6bf10; - run_6be00(); return; - } - r17 = r0 + 3; - /* Next insn is delay slot */ - pc=0x6be50; - run_6be00(); return; - case 0x6be00: - pc=0x6be00; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6be00() throws ExecutionException { /* 0x6be00 - 0x6c000 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6be00: - r17 = r16 - r2; - r4 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r5 = r22 + r0; - r6 = r17 + r0; - /* Next insn is delay slot */ - r31=0x6be18; - pc=0x5cc00; - run_5cc00(); return; - case 0x6be18: - r30 = r30 - r17; - r22 = r2 + r0; - r19 = r2 + 20; - r17 = r0 + r0; - /* Next insn is delay slot */ - pc=0x6b9f0; - run_6b800(); return; - case 0x6be30: - r22 = r0 + r0; - /* Next insn is delay slot */ - pc=0x6b6b4; - run_6b600(); return; - case 0x6be3c: - r30 = r0 + r0; - r7 = r0 + 1; - /* Next insn is delay slot */ - pc=0x6b740; - run_6b600(); return; - case 0x6be4c: - r17 = r0 + r0; - case 0x6be50: - r4 = r22 + r0; - r5 = r18 + r0; - /* Next insn is delay slot */ - r31=0x6be60; - pc=0x6b200; - run_6b200(); return; - case 0x6be60: - r30 = r30 + r18; - /* Next insn is delay slot */ - pc=0x6b9f0; - run_6b800(); return; - case 0x6be6c: - r30 = r16 + r18; - addr=r30+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r16 = r30 + r0; - r3 = r20 + r2; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x6b738; - run_6b600(); return; - } - case 0x6be8c: - r16 = r16 + 1; - addr=r16+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r3 = r20 + r2; - addr=r3+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r3 = tmp; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6be8c; - continue; - } - /* Next insn is delay slot */ - pc=0x6b738; - run_6b600(); return; - case 0x6beb4: - r17 = r0 + 1; - /* Next insn is delay slot */ - pc=0x6be50; - continue; - case 0x6bec0: - r17 = r0 + 1; - /* Next insn is delay slot */ - pc=0x6bb68; - run_6ba00(); return; - case 0x6becc: - r3 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x6ba68; - run_6ba00(); return; - } - case 0x6bedc: - r3 = readPages[(r29+100)>>>12][((r29+100)>>>2)&0x3ff]; - r4 = readPages[(r29+104)>>>12][((r29+104)>>>2)&0x3ff]; - writePages[(r3+0)>>>12][((r3+0)>>>2)&0x3ff] = r2; - r2 = r0 + 1; - writePages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff] = r2; - writePages[(r19+0)>>>12][((r19+0)>>>2)&0x3ff] = r2; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r22; - r2 = r0 + 98; - /* Next insn is delay slot */ - pc=0x6b774; - run_6b600(); return; - case 0x6bf04: - r18 = r0 + 33; - /* Next insn is delay slot */ - pc=0x6bd58; - run_6bc00(); return; - case 0x6bf10: - r17 = r0 + 2; - /* Next insn is delay slot */ - pc=0x6be50; - continue; - case 0x6bf1c: - r4 = readPages[(r29+108)>>>12][((r29+108)>>>2)&0x3ff]; - if(r4 == r0) { - /* Next insn is delay slot */ - pc=0x6bedc; - continue; - } - /* Next insn is delay slot */ - pc=0x6ba68; - run_6ba00(); return; - case 0x6bf34: - if(r30 != r16) { - /* Next insn is delay slot */ - pc=0x6ba68; - run_6ba00(); return; - } - r3 = r16 < 2 ? 1 : 0; - if(r3 != r0) { - /* Next insn is delay slot */ - pc=0x6bedc; - continue; - } - r4 = r22 + r0; - r5 = r16 + -1; - /* Next insn is delay slot */ - r31=0x6bf58; - pc=0x5de00; - run_5de00(); return; - case 0x6bf58: - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6ba68; - run_6ba00(); return; - } - r3 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r2 = readPages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x6bedc; - continue; - case 0x6bf74: - r2 = readPages[(r22+8)>>>12][((r22+8)>>>2)&0x3ff]; - r2 = r17 < r2 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6bfdc; - continue; - } - r2 = r19 + r0; - r3 = r17 + r0; - case 0x6bf90: - r4 = r3 + 1; - r3 = r3 + 4; - r3 = r3 << 2; - writePages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff] = r4; - r3 = r22 + r3; - r4 = r0 + 1; - writePages[(r3+4)>>>12][((r3+4)>>>2)&0x3ff] = r4; - /* Next insn is delay slot */ - pc=0x6bc58; - run_6bc00(); return; - case 0x6bfb4: - r4 = readPages[(r29+96)>>>12][((r29+96)>>>2)&0x3ff]; - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - r3 = r3 + -1; - if(r3 == r16) { - /* Next insn is delay slot */ - pc=0x6c034; - run_6c000(); return; - } - r18 = r0 + 34; - /* Next insn is delay slot */ - pc=0x6bd58; - run_6bc00(); return; - case 0x6bfdc: - r5 = readPages[(r22+4)>>>12][((r22+4)>>>2)&0x3ff]; - r4 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r5 = r5 + 1; - /* Next insn is delay slot */ - r31=0x6bff0; - pc=0x5b800; - run_5b800(); return; - case 0x6bff0: - r6 = readPages[(r22+16)>>>12][((r22+16)>>>2)&0x3ff]; - r5 = r22 + 12; - r6 = r6 + 2; - r4 = r2 + 12; - case 0x6c000: - pc=0x6c000; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6c000() throws ExecutionException { /* 0x6c000 - 0x6c200 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6c000: - r6 = r6 << 2; - r19 = r2 + r0; - /* Next insn is delay slot */ - r31=0x6c010; - pc=0x48fdc; - run_48e00(); return; - case 0x6c010: - r4 = readPages[(r29+88)>>>12][((r29+88)>>>2)&0x3ff]; - r5 = r22 + r0; - /* Next insn is delay slot */ - r31=0x6c020; - pc=0x5ba00; - run_5ba00(); return; - case 0x6c020: - r22 = r19 + r0; - r3 = readPages[(r19+16)>>>12][((r19+16)>>>2)&0x3ff]; - r2 = r19 + 20; - /* Next insn is delay slot */ - pc=0x6bf90; - run_6be00(); return; - case 0x6c034: - r3 = r16 >> 5; - r3 = r3 << 2; - r2 = r2 + r3; - r2 = readPages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff]; - r3 = r0 + 1; - r16 = r3 << (r16&0x1f); - r18 = r16 & r2; - r18 = ((r0 & 0xffffffffL) < (r18 & 0xffffffffL)) ? 1 : 0; - r2 = r0 + 34; - r18 = r2 - r18; - /* Next insn is delay slot */ - pc=0x6bd58; - run_6bc00(); return; - case 0x6c200: - pc=0x6c200; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6c200() throws ExecutionException { /* 0x6c200 - 0x6c400 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6c200: - r29 = r29 + -48; - writePages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff] = r16; - r16 = 7 << 16; - r16 = r16 + 30712; - addr=r16+48; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - writePages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff] = r31; - writePages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff] = r18; - writePages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff] = r17; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6c4d8; - run_6c400(); return; - } - case 0x6c228: - r24 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r15 = r24 >> 5; - r15 = r15 << 2; - r24 = r24 & 31; - r15 = r6 + r15; - if(r24 == r0) { - /* Next insn is delay slot */ - pc=0x6c24c; - continue; - } - r15 = r15 + 4; - case 0x6c24c: - r3 = readPages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff]; - writePages[(r15+-4)>>>12][((r15+-4)>>>2)&0x3ff] = r0; - addr=r3+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r10 = r15 + -4; - r12 = r10 + r0; - r5 = r10 + r0; - r8 = r0 + r0; - r14 = r0 + r0; - r11 = r0 + r0; - r17 = r0 + 8; - r25 = r0 + 32; - r9 = r3 + 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6c334; - continue; - } - case 0x6c284: - r7 = r16 + r2; - addr=r7+0; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r7 = tmp; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x6c430; - run_6c400(); return; - } - r7 = (r2&0xffffffffL) < (33&0xffffffffL) ? 1 : 0; - if(r7 == r0) { - /* Next insn is delay slot */ - pc=0x6c4ac; - run_6c400(); return; - } - r2 = r14 < r11 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6c320; - continue; - } - r2 = ((r5 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6c310; - continue; - } - r2 = r8 < 8 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6c310; - continue; - } - r8 = r17 - r8; - r8 = r8 << 2; - r18 = r25 - r8; - r7 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r2 = r5 + r0; - /* Next insn is delay slot */ - pc=0x6c2e8; - continue; - case 0x6c2e4: - r7 = r3 + r0; - case 0x6c2e8: - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 + 4; - r13 = r3 << (r18&0x1f); - r7 = r7 | r13; - r3 = r3 >>> (r8&0x1f); - writePages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff] = r7; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r7 = ((r2 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; - if(r7 != r0) { - /* Next insn is delay slot */ - pc=0x6c2e4; - continue; - } - case 0x6c310: - r2 = ((r6 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6c48c; - run_6c400(); return; - } - r8 = r0 + 8; - case 0x6c320: - r3 = r9 + r0; - case 0x6c324: - addr=r3+1; - tmp = readPages[(addr)>>>12][((addr)>>>2)&0x3ff]; - tmp = (tmp>>>(((~addr)&3)<<3)) & 0xff; - r2 = tmp; - r9 = r3 + 1; - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6c284; - continue; - } - case 0x6c334: - if(r11 == r0) { - /* Next insn is delay slot */ - pc=0x6c4b8; - run_6c400(); return; - } - case 0x6c33c: - r2 = ((r5 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6c3a4; - continue; - } - r2 = r8 < 8 ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6c3a4; - continue; - } - r2 = r0 + 8; - r8 = r2 - r8; - r8 = r8 << 2; - r9 = r0 + 32; - r9 = r9 - r8; - r7 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r2 = r5 + r0; - /* Next insn is delay slot */ - pc=0x6c37c; - continue; - case 0x6c378: - r7 = r3 + r0; - case 0x6c37c: - r3 = readPages[(r2+4)>>>12][((r2+4)>>>2)&0x3ff]; - r2 = r2 + 4; - r4 = r3 << (r9&0x1f); - r4 = r7 | r4; - r3 = r3 >>> (r8&0x1f); - writePages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff] = r4; - writePages[(r2+0)>>>12][((r2+0)>>>2)&0x3ff] = r3; - r4 = ((r2 & 0xffffffffL) < (r12 & 0xffffffffL)) ? 1 : 0; - if(r4 != r0) { - /* Next insn is delay slot */ - pc=0x6c378; - continue; - } - case 0x6c3a4: - r2 = ((r6 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6c500; - run_6c400(); return; - } - r2 = r6 + r0; - case 0x6c3b4: - r5 = r5 + 4; - r3 = readPages[(r5+-4)>>>12][((r5+-4)>>>2)&0x3ff]; - r2 = r2 + 4; - writePages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff] = r3; - r3 = ((r10 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x6c3b4; - continue; - } - case 0x6c3d0: - r2 = r2 + 4; - r3 = ((r10 & 0xffffffffL) < (r2 & 0xffffffffL)) ? 1 : 0; - writePages[(r2+-4)>>>12][((r2+-4)>>>2)&0x3ff] = r0; - if(r3 == r0) { - /* Next insn is delay slot */ - pc=0x6c3d0; - continue; - } - case 0x6c3e4: - r2 = readPages[(r15+-4)>>>12][((r15+-4)>>>2)&0x3ff]; - case 0x6c3ec: - if(r2 != r0) { - /* Next insn is delay slot */ - pc=0x6c410; - run_6c400(); return; - } - case 0x6c3f4: - if(r6 == r10) { - /* Next insn is delay slot */ - pc=0x6c528; - run_6c400(); return; - } - r10 = r10 + -4; - case 0x6c400: - pc=0x6c400; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); - } - /* NOT REACHED */ - } - } - private final void run_6c400() throws ExecutionException { /* 0x6c400 - 0x6c600 */ - int addr, tmp; - for(;;) { - switch(pc) { - case 0x6c400: - r2 = readPages[(r10+0)>>>12][((r10+0)>>>2)&0x3ff]; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6c3f4; - run_6c200(); return; - } - case 0x6c410: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r18 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r17 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r2 = r0 + 5; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6c430: - r8 = r8 + 1; - r2 = r8 < 9 ? 1 : 0; - r11 = r11 + 1; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6c468; - continue; - } - r2 = readPages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff]; - r2 = r2 << 4; - case 0x6c450: - r7 = r7 & 15; - r7 = r2 | r7; - writePages[(r5+0)>>>12][((r5+0)>>>2)&0x3ff] = r7; - r3 = r9 + r0; - /* Next insn is delay slot */ - pc=0x6c324; - run_6c200(); return; - case 0x6c468: - r2 = ((r6 & 0xffffffffL) < (r5 & 0xffffffffL)) ? 1 : 0; - if(r2 == r0) { - /* Next insn is delay slot */ - pc=0x6c320; - run_6c200(); return; - } - writePages[(r5+-4)>>>12][((r5+-4)>>>2)&0x3ff] = r0; - r2 = r0 + r0; - r5 = r5 + -4; - r8 = r0 + 1; - /* Next insn is delay slot */ - pc=0x6c450; - continue; - case 0x6c48c: - r12 = r5 + -4; - writePages[(r5+-4)>>>12][((r5+-4)>>>2)&0x3ff] = r0; - r14 = r11 + r0; - r5 = r12 + r0; - r8 = r0 + r0; - r3 = r9 + r0; - /* Next insn is delay slot */ - pc=0x6c324; - run_6c200(); return; - case 0x6c4ac: - r7 = r0 + 41; - if(r2 == r7) { - /* Next insn is delay slot */ - pc=0x6c550; - continue; - } - case 0x6c4b8: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r18 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r17 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r2 = r0 + 4; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6c4d8: - writePages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff] = r4; - writePages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff] = r5; - writePages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff] = r6; - /* Next insn is delay slot */ - r31=0x6c4ec; - pc=0x6b400; - run_6b400(); return; - case 0x6c4ec: - r6 = readPages[(r29+24)>>>12][((r29+24)>>>2)&0x3ff]; - r5 = readPages[(r29+20)>>>12][((r29+20)>>>2)&0x3ff]; - r4 = readPages[(r29+16)>>>12][((r29+16)>>>2)&0x3ff]; - /* Next insn is delay slot */ - pc=0x6c228; - run_6c200(); return; - case 0x6c500: - if(r24 == r0) { - /* Next insn is delay slot */ - pc=0x6c3e4; - run_6c200(); return; - } - r2 = readPages[(r15+-4)>>>12][((r15+-4)>>>2)&0x3ff]; - r24 = r0 - r24; - r3 = r0 + -1; - r3 = r3 >>> (r24&0x1f); - r2 = r3 & r2; - writePages[(r15+-4)>>>12][((r15+-4)>>>2)&0x3ff] = r2; - /* Next insn is delay slot */ - pc=0x6c3ec; - run_6c200(); return; - case 0x6c528: - r31 = readPages[(r29+44)>>>12][((r29+44)>>>2)&0x3ff]; - r2 = r0 + 1; - writePages[(r10+0)>>>12][((r10+0)>>>2)&0x3ff] = r2; - r18 = readPages[(r29+40)>>>12][((r29+40)>>>2)&0x3ff]; - r17 = readPages[(r29+36)>>>12][((r29+36)>>>2)&0x3ff]; - r16 = readPages[(r29+32)>>>12][((r29+32)>>>2)&0x3ff]; - r2 = r0 + 5; - r29 = r29 + 48; - /* Next insn is delay slot */ - pc=r31; - return; - case 0x6c550: - r3 = r3 + 2; - writePages[(r4+0)>>>12][((r4+0)>>>2)&0x3ff] = r3; - if(r11 != r0) { - /* Next insn is delay slot */ - pc=0x6c33c; - run_6c200(); return; - } - /* Next insn is delay slot */ - pc=0x6c4b8; - continue; - case 0x6c5fc: - case 0x6c600: - pc=0x6c600; - return; - default: throw new ExecutionException("invalid address 0x" + Long.toString(pc&0xffffffffL,16)); + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); } /* NOT REACHED */ } } - private static final int[] _data1 = decodeData("\177\177\177\177x\000\000\000\000\000 \020\010\004\002\001",0x2); - private static final int[] _data2 = decodeData("\177\177\177\177x\000\000\000\000\000 \020\010\004\002\001",0x2); - private static final int[] _data3 = decodeData("\022\\h6{UXd\020\033Mw!\001`a9\034lR\001\034Js\023KA \000\000\000\000\022\\jVs-\\o;[D\006{Uhp:]\004\0063=dm0]\004\002CUfe\020\011l6\0234N,\020\011n\006c\005Rn\023H\rw\021\000Na8\034\rF)\034R.\005\000\000\000\002\005\006M\"H\005R\003QPe\020\020(4j\024@C9\033n7\033\005fs2[,&c\025d 3\033n\"\0025jl:\032.\006c\024@E7\035M\027\023=\\m2[NG\030(@ ![n\007KIRg4\035\004\002B\014R \030N'\023A4d0\030M$\004k\005dc7H\010&\013eJ\000\000\000\nFC%f 4\\d\004\n\r\032E\026\010\016&+1Ja9Y$\003\0018r5\027\rD\002A\011\014e7\030m\007+IFh\021\n%B\001H` %\035-b\001H`1\032BD\002\002AXa:\031Mw\0234@i7\031\014W\003\025\\d2[NB\003YJr9Z-vq8\000A!S(R\003\r^m2\\d\007;%hh\020\020(%\032=\030U*\021)EI\001\034O\020\025h\025\022I\002N*\026'2\003\031^r\020\031\014W#\005Rl9H\016&+\005H :\032\014R\003!Jl8\010\014fK1J.\005\010\004\005#!Rs\020\032.2\003\031de2H\0166{\031hw0\\LRa\001Bn2\010\017\026{T@a9\031$\007;\025Xc7[,R\003Q^ 9\031,FKMhr4XNW#\024@i:\010\016Vs\021Jr\005\010\004\006\033\025dt0Z-b\003\r^n2\032.FK=\\s\035H\014\027\031\001^u:\033\r\026s\025H 4[D\007#!J #SJR\002\035Jn2\\L\026a\001 u1\033\r\026\031\001\030i1Y-g\033\024\\\n\"\031,FK\rBt2Y\004\007#<@t4\031$\007;%fe9]\004\006\023\025Rn3H\011\022\003\025le9\010\r\006\013\020@t4\031$\007\0031Ja9].&)\001^f\020\034LV\013\021Rn3BD\002\003\011^o5\\d\006{\030@(1].'\023\025\\t6\036$\007\033AJn2\032-f9\001fo6Y$\007#%Ze\020\031\014V\013\020@f7\\D\007#\005p 9\031,\027\033=\\s\024KA%#!J 7\031.v+Mh ;\031.'\033%^n\020\030l\026q\001De\020\031Mw+9H 0]\004\007#!J PiT)\001Po6Y.\006\013\035J:\005\010\004\006CQhp\035\013ew\033=jr1Y,f{INe\027\033LW!=`/0XmV)5Fr7\\n6\013Mf/\005\002JW\033\005Ne\035\002L\026\0335J -Sj\005\"%\036N\027\013Eei\0016F$S\010Ui8\\.\005\002Iw\003QRo7\034g Q\000@-4\013\004\002i5Pe6\034\004\002\001\000@ \020\010\004\002\001\000@ \020\034m\006{\\@t4\032.2\003!Jl8\010\014\026s\020@e<\032.@Q\000@-3\013\004\002i5Lo9\033,\027!\001\014O)\023(\025!\000@ \020\034lW!\001^u:\034\016W!\001Li6\031$\0063=dm0]\001\"\001\000Zo\026\010\005Rk=jt3\032-F)\001\014I&\021$\002\001\000@ 9Y.B\003=jt8\035.B\003\031Rl2H\rf\0135J\n\020\010\005W\0210@-\026\\LW\003=dt\020\021I\024b\024@ \020\010\004\002\003MJt\020\034LW\003=dt\020\031M\026c\024@n0[,PQ\000@-6\013\004\002i5fy6XMvc1Rs:\010\010dJ1\n \020\034lW!\001fy6XMva\001Xi9]\004\0063%Xe\020\033L\026k\024\024 \020\010\004\002\001\000Z-6\030,&+1Hu6\\\004\002\001\000@ \020\010\004\002C=Xd\020\033L\026k\024@f7\\D\002i5fy6XMvc1Rs:\n!\"\001\000@ \020\010\005RkYRc2[\014\026\023\025Xs\020\021I\024b\024@ 9Y.B\003\031Rl2H\rf\0135J 3\033n\"\0031Bb2[\004\006#UZp\020\032-b\002Y\022C\"H\014f{IZa:\002D\002\001\000@ \020\013%W\033\025hp1H\011e*5\004E)\010\004\002\001\000@s2]\004\007\003I^g9\030-R\003\r^u7\035\014W\020(@ \020\010\004\002\0014Zc8\035$\004\032A* \020\010\004\002\001\000@ \020\010\0166+P@t0\\Lv+P@p9\033l6+Mfo9\002D\002\001\000@ \020\013%VK9Rt6Y-R\0029*M!\021*\"\001\000@d2YM\026s\024@'2[.\007#dN 6Y-V{Ir\n\020\010\004\002\001\000@-\026[,\027C\025dr7\\N2\0029*M!\021*\"\003MJt\020\033NVk\011Jr\020\033lb\003\025dr7\\N2\003\011Jf7\\LR\003\025pi:\032-f8(@ \020\010\004\002\0014Zm0^\014F+Ahh\020\023JTj\011\nR\020\010\0166+P@r2XnW\023MRo7\010\014F+Ahh\020\031Mw\021\001Za1\\Mr\003\rBl6\034d\006\0139H \020\\n&\030(@ \026]HDJ\035\022T\020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\0166+P@v2\\L&{MRtL\000\000\023r\000\000\001\036t\000\000\n\011\030\000\000P!@\000\005\003t\000\000'o\000\000\002@&\000\000\023\177\000\000\001 *\000\000\011tP\000\000O\001\000\000\004wT\000\000'\025`\000\0028|\000\000\023S`\000\001\034\177\000\000\011m \000\000Ms@\000\004pp\000\000'\001\000\000\0027\024\000\000\0235P\000\001\033\023\000\000\011WP\000\000M1\000\000\004j$\000\000'W\000\000\002 \000\001\030\016\000\000\011(8\000\000L\007\000\000\004T(\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000JF@\000\004Tl\000\000%)@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011'@\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004`8\000\000&\003@\000\0020\034\000\000\023\001`\000\001\030\016\000\000\011@p\000\000L\007\000\000\004U\014\000\000%F`\000\002.2\000\000\022@\020\000\001\026B\000\000\0116x\000\000K\017\000\000\004\\d\000\000%O`\000\002(@\000\000\022_P\000\001\027<\000\000\011 \010\000\000Kw\000\000\004V<\000\000%\000 \000\002(\002\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000J\000@\000\004P\004\000\000%\000 \000\002(\002\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000J\000@\000\004Ul\000\000%\000 \000\002+\022\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000J\000@\000\004P\004\000\000%\000 \000\002(\002\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000J\000@\000\004P\004\000\000%\000 \000\002(\002\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000J\000@\000\004P\004\000\000%\000 \000\002(\002\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000J\000@\000\004P\004\000\000%\000 \000\002(\002\000\000\022@\020\000\001\024\001\000\000\011 \010\000\000Jf\005#=^ 6X-gI\000N(\023K@\000\000\001\034o\020\035L\026cUJ 3Z.f+8\\\000\"\032.fKMRo7\010\014'I\001te9\033e`\000\000\000%9U-f[9^w7\010\rw\003QRo7\010\005\002i4Js\024KA \000\000\000%9U-f[9^w7\010\0167;%hc4\010\005\002i\025F)\027\002@\000\000\000\000%9S-\027\033MRn3H\004W\0318\024\000\000\011.2+L\\\n\000\000\010W\023I^r\020\032-b\002\r\030I\020\030.&;UZe7\035\0163Q\000\000\000\000\000\0106C=fe7\010\0105\002T@d7Y.2\0039^t\020\034nW\003A^r:\010\rF{9N 9\031,vKMhe9\034e`\001Xj0\031\000\000\000\000\000l5\030L\000\000\000\000\000c\033\r\014G#Xd\000\033\r,3\001H\000\000\000\021.'\023=d:\020\023Mr\0035Jm7\\O\022\003\031^r\020\031\017\026s\005Zi1H\014'+\031Le9\013A \000\000\000C7[Nf+Ifi7[D\007#\005Dl2H\r\026s\r^m8\033\014W#\024\\\000\000\000\000\005+9Vn7]mb\003\025\\c7Y\r\026s\034\\\000\000\000\011\026c1Jg0[\010&c=Fk*\031.&k%\\a:\033n \000\001nh4[\014P\000\000\000u7\035\r\026`\000\000\0002[\0166(\000\000\000\000\024\014\027\023MRn3H\0166{Udc2H\014fK1J \023I.28(\000\000\000\021Mw+9H \023_$r\003%\\s:\031,\026!\001^f\020\031-f!5^f\026YM\026c\024\\\000\000\000\004W\031 Jd\024H\007\"\001\025f \024\011.2\001\025f)\035\010\004W\030(\000\000\000\000\004W\031\000Z #\032-F)\000Js\026\010\rFK9J \022Y\004\002A\025f \022\\e\023Q\000Js\005\000\000\005;\005dn4[Lp\0021Bb2[\004\006s\005Ze\020\034nF\013Ihs\020\035m\027# @a\020\034m\006K\031h-9\\\014\026\033\024@c4\030.&\013\rhe9\013@\005\033\025di7].2\003\025dr7\\@\000\000\001\004u3H\r\026q\001\002C&Q%B\003\r^d2H\014f{1Xo;\\`\000\000\000P0<\011/\003Q$\000\000\000i\031@\000\006N\\\000\0004u`\000\003'.\000\000\032:p\000\001SW\000\000\r\0358\000\000ik@\000\006N\\\000\0004u`\000\003$Z\000\000\032:p\000\001SW\000\000\r\0358\000\000ik@\000\006N\\\000\0004u`\000\003'.\000\000\032:p\000\001SW\000\000\r\0358\000\000ik@\000\006N\\\000\0004u`\000\003'.\000\000\032:p\000\001SW\000\000\r\0358\000\000ik@\000\006N\\\000\0004u`\000\003'.\000\000\032%@\000\001SO\000\000\r\0358\000\000ik@\000\006N\\\000\0004u`\000\003'.\000\000\032:p\000\001SW\000\000\r\0358\000\000iT\000\000\006LL\000\0004u`\000\003%4\000\000\032) 0\000\000\000\000\000\000\000\000\000\010\004\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000 \000\000\004\000\000\000\002\001\000@ \020\010\004\002\001\000@\010\004\000\000\000\000\000\000p8\034\016\007\003A`p8\034\016\007\003A`p8\034\016\007\003A`p8\034\016\007\000\000\000\000\000\030\000\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\000\000\000@\000\000`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\n7K9ha<\010\014W\023I^r\027\000\000\000\002Ado3\\L\026i\001Fo:[NF+H@u7\031\014V3%\\e2\013@\000\0029jm1\031.\"\003=jt\020\033lb\003IBn3Y%`\000\000\000\000#\033nVs\020@e7\031\005V{\030Zf4[\014R\003%\\s:\031,\026!\001^f\020\011oR98\000\000\000\023nW!\001^f\020\033,Vk=dy\027\000\000\004k%fs4[Lr\001\035v'\027\000\000\000\000\001\034o\020\034nG\023%\\g\020\031m\0273\025\\.\000\000\000\000\002\rBn7\033nB\003=`e7\010\r\026sAjt\020\031M\026c\024\\\000\005\016d\002Q(T*\025\nE\"Q\001&o:\\L6)h@%9B@\002)YH \020\000\000\000\001\024`4<\000\000\000\000\000J0\031\036\000\000\000\000\000%\026M\0162\001\024Z1\034\\`\000\002M^u9\030lR\003\031Rl2H\0146{9ha4[N2\003%Xl2Yl\026a\001Fh0\\L\026\033QJr\027\000\n7#IBn3Y)\026sAjt&[lF(\000\000\000\000\024.V{QJs\020\034nFK1X 7\\\014Vq\001Bt\020\031-f!\001^f\020\033\r\026s\024\\\000\000\000\010v\013IDa3Y$\006#\005ha\020\030.B\003\025\\d\020\033lb\003Mha:\031-V+9h.\000\000\000\005;IRt4[Lr\003Q^ 6\032,'\023\005dy\020\033Mw!\001fu8\034\rw\023QJd\027\000\000\000\001\011\002C&Q$\"\003\025\\v4\\Mvs5Jn:\010\016f\013IRa1\033\014R\0039^t\020\031Mw+9H.\000\000\010fK1J 7\030-V)\001bu7]\014W\031\001\\o:\010\014f{U\\d\020\n\004\"\021\001^r\020\017\007bI8\000\000'\033d\0063%Xe\020\033L\026k\024@g4]LVq8\000I6\033\014V;\005X 8\033n7#\031Rx\027\000\000\000\000\000xn7[LSp\000\000\000\000p.@\000\007\003\\\000\0008'\000\000\003C\026\000\000\034\032\000\000\001aV\000\000\016\004\020\000\000p{\000\000\007\007l\000\0009\034\000\000\003J\024\000\000\034\\@\000\001e_\000\000\016-H\000\000r\\@\000\007\022<\000\0009-\000\000\003L$\000\000\034~@\000\001h\016\000\000\016C\010\000\000tC\000\000\007$\000\000\000:\030\000\000\003O2\000\000\035\0130\000\001i\034\000\000\016x`\000\000wS\000\000\007@\010\000\000<\r \000\003_x\000\000\035{@\000\001nk\000\000\016}8\000\000x\030\000\000\007Ld\000\000\\\000\000#zp\000\002\037W\000\000\021zP\000\001\017k@\000\010~\\\000\000Gu`\000\004>t\000\000#t\000\000\002\037W\000\000\021}8\000\001\017k@\000\010~\\\000\000Gu`\000\004?.\000\000#zp\000\002\0376\000\000\021}8\000\001\017k@\000\010}H\000\000Gu`\000\004?.\000\000#zp\000\002\037W\000\000\021}8\000\001\017k@\000\010~\\\000\000Gu`\000\004?.\000\000#zp\000\002\037W\000\000\021}8\000\001\017k@\000\010~\\\000\000Gu`\000\004?.\000\000#zp\000\002\037W\000\000\021}8\000\001\017k@\000\010~\\\000\000Gu`\000\004?.\000\000#zp\000\002\037W\000\000\021}8\000\001\017k@\000\010~\\\000\000G`\000\000\004GH\000\000$8`\000\002#(\000\000\022\031x\000\001\0211\000\000\011\011X\000\000H}@\000\004I2\000\000$JP\000\002$I\000\000\022$ \000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$K`\000\002$^\000\000\022%p\000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$K`\000\002$4\000\000\022%p\000\001\022/\000\000\011\021@\000\000I\027@\000\004I<\000\000$K`\000\002$@\000\000\022\"(\000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$K`\000\002$^\000\000\022%p\000\001\022\036\000\000\011\022x\000\000I\027@\000\004Hp\000\000$K`\000\002$^\000\000\022%p\000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$K`\000\002$^\000\000\022%p\000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$K`\000\002$^\000\000\022%p\000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$K`\000\002$^\000\000\022%p\000\001\022/\000\000\011\022x\000\000I\027@\000\004I<\000\000$@@\000\002(g\000\000\022DP\000\001\024\026@\000\011!\024\000\000Iz \000\004O\n\000\000%\017\020\000\002)X\000\000\022M \000\001\024d@\000\011&\020\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022Mh\000\001\024n@\000\011&t\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022Mh\000\001\024Z\000\000\011&t\000\000J7 \000\004R`\000\000%\033P\000\002)]\000\000\022Mh\000\001\024`\000\000\011%\030\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022Mh\000\001\024n@\000\011&t\000\000J/\000\000\004S:\000\000%\033P\000\002)8\000\000\022Mh\000\001\024n@\000\011&t\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022Mh\000\001\024n@\000\011&t\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022Mh\000\001\024n@\000\011&t\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022Mh\000\001\024n@\000\011&t\000\000J7 \000\004S:\000\000%\033P\000\002)]\000\000\022H0U9Z-f9\001^v2\\N6KiJd\020\030,F#IJs9Z-f9\001Zo2\031%`\000\000\000\000$[\rF+\035Bl\020\030mvk\011Rn0]\r\026{8@o3\010\0146{5Za7\031\004\006\0139H 0Y\014G\023\025fs4[Lr\0035^d2K@\000\000\000\000\000\000\000\033@\006p\000\000\000\000\000\000\000\000\000\000\000\000\017@\003p\000\000\000?\000\000\000\000\000\0006\000\000\000\0030\000l\000\000\000\000\000\000\000\000\000\000\000\000\0020\000\000\000\010\000\000\000\001\030\000\000\027\011@\000\0018\000\000\000\004\"\000\000\000\"\000\000\000\000Q)\024j\000\000\000\000\000\000\000\000\000\000\000\000\001h4\000\000\000\000\000\000\000\000\000\000 \001@\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000P(X\016\000\000\000\000\000\" \000\000\000\001Bq\000\0014[/\027\000\000\000\0258X\000\000\000\000\014H \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004X\000\000_-@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001;\000&`\011p\000\000\000\000\000\000\000\000\000\000\036\013\017FerY|v\000%\000\000\005rh\000\000\000\000\000\000\003=V\177=@\000\000\000\000<\0327ZowZ\037N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023\031Tn9\035O's\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Hh6\034\016GCq@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\014J'\024JeRy\004F%\023J%2i\021\011E\"qHl:\037\010\000&3)\\`\013\036Og\023\000\000\000\022\n\005C\001Pp<\020\011\005\002a@h8\036\010\004BA0`4\034\017\004\000\003\021Pl8\035\017\007c\000\000\000\001H\000r\000,@\017\020\004d\0019\0006 \017H\0002\000\034@\013\020\003d\001\031\000. \rH\003r\000\014@\007\020\002d\000y\000& \013H\0032\000|@\000\000\000l\000;\000\026`\007X\000\001\027_m{0\007l\001\037\000\000\000\001hT\000\000\036M \000\002u*\000\000\037.P\000\002;\025\000\000\027[(\000\001]j@\000\017oT\000\000\016E \000\001tj\000\000\027*P\000\001zu\000\000\023Y(\000\001=Z@\000\rnT\000\000~} \001xt*\000\037O&P\002}:U\000\037oW(\002?\035J@\027{mT\001_nu \017\177wj\000\000\000\000\000\000\000>\027\000\000\007s8\000\000_+@\000\007{\\\000\000\000\000\000\000\000\000\000\000\0007zp\000\003\177w\000\000\000\000\000\000\000\r\002@\000\002i\024\000\000&Q \000\0035J\000\000#0P\000\002[%\000\000\031\\(\000\001mr@\000\000h\024\000\000\026I \000\0025\n\000\000\033,P\000\002\033\005\000\000\025Z(\000\001Mb@\000\016o\024\000\017\006A \002y4J\000'S(P\003=Ze\000#qX(\002_-R@\031|n\024\001ovy \000\000\000\000\000\000\003`p\000\000^'\000\000\011t8\000\000o3@\000\010|\034\000\000Wi`\000\006?\016\000\000;|p\000\000\000\000(\034Mv#UFe2\010\016F{<@m:Xm\002\003\r^d2K@\005\033\025Nm2[NB\003IJa1Z\014V!\001Bn7]\r\006+H@o7\031%B\003=le9\035n&KQRn3H\r\027!8\000\000\000\000\011V+5^r\020\003\022\017m\000\0375\036H\002\026ex@\022\17774\001$C{ \013\010cR\000^j=\020\006\024:q\0002l_\010\003#.8@\032\17774\001^\037[ \016$\037Z\000u4\rP\007D1i\000=l\026H\003{)t@ \037ID\002\005\016\\ \020B\006b\001\005Y>\020\010:\0241\000D5g\010\004)RX@\"\17774\002\033\rK \021q}Z\001\020XuP\011\022\017l\001\"|``\006r9\010\000\nJ?@\001\035/Q\000=&Mh\003\001[1\000\022YIp\000CH\020 \017rEF\000UwW0\006\025C7\000\011\rcP\001\004Mi\000\034\0002$\000.u\002 \r\014H8\000\177\007=0\000rb)\000)gn@\002\0045z@\005kZ\020\001\004tg\000\007\001\032h\000/_H\020\001f#V\000\01605\030\000stN\000\020E|,\001=|J\000\003X\177p\000K\177{`\000\0260\017\000;eq\010\002\026Z\005\000\rQ{4\0006?3`\002>,\022\000[Sh`\001}M\036\000\027}\"h\001j']\000\030~_\024\001q=O \0009gn\000E\024R \007)W{\000\027v\021x\002\032]\004\000\n`\031@\000F~\036`\006]/`\000go\004\000\004kh6\000\0075\036\030\002\"a/\000\034aX \000eLa \005xR@\0004\020\021P\007\1771\000\000\023.28\000b\006\003\000\002U6(\000sT2 \006\007\011v\000`#\r3\177dC{ \000\000\000\001yhD\026@\000\000\000\000yx#&\020\000\000\000\000;<3\n\026\000\000\000\000\034|\0038\034\000\000\000\000\016\017\")\001\000\000\000\000\006n\034\010E\000\000\000\000\003+'f\035\000\000\000\000\000\000\000\000\001\000\000\000\000\014\000\000\000\001\000\000\000\000\014C\030\000\000\000\000\000\000\000aL\000\000\000\000\000\000\000\020`\000\000\001\022N#\000\r\026s\030\000N S@\006s\005\\\000\030\014&#\031Pj6\033N\007\024\n\011\006D\"Q@\000\000\000\0000\030LF3!Tl7\034\016,\026\023\rHe3\000\000\000\000\000Pn:[\rBH\000\0000\000\000\000\000\000\020\1770\000\001\010R`\000\010E\026\000\000D\022p\000\004\"K\000\000\"\024X\000\002\021%@\000\021\n,\000\001\010R`\000\010E\026\000\000CNP\000\004\035*\000\000\"\024X\000\002\016>@\000\020\177H\000\001\010R`\000\010@\024\000\000D\001`\000\004 \016\000\000\"\000p\000\002\020\007\000\000\021\0008\000\001\010\003@\000\010@\034\000\000D\001`\000\004 \016\000\000\"\024X\000\002\021%@\000\021\n,\000\001\010R`\000\010E\026\000\000D)0\000\004\"K\000\000\"\024X\000\002\021%@\000\021\n,\000\001\0101\000\000\010CZ\000\000D)0\000\004!m\000\000\"\024X\000\002\021%@\000\021\n,\000\001\010R`\000\010DB\000\000D)0\000\004\"K\000\000\"\001`\000\002\021%@\000\021\n,\000\001\010R`\000\010E\026\000\000D)0\000\004 E\000\000\"\024X\000\002\021%@\000\021\002P\000\001\010R`\000\010E\026\000\000D)0\000\004\"K\000\000\"\024X\000\002\021%@\000\021\n,\000\001\010R`\000\010E\026\000\000D)0\000\004!\005\000\000\"\007\000\000\002\020v@\000\021\0074\000\001\010; \000\010B\002\000\000D\016\000\000\004\"K\000\000\"\024X\000\002\0168@\000\021\n,\000\001\010&`\000\010Dl\000\000D\025p\000\004\034q\000\000\"\024X\000\002\016W\000\000\021\n,\000\001\010I \000\010E\026\000\000D)0\000\004![\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@\000\002\031\026\000\000\021T\020\000\001\r!\000\000\010dd\000\000FP@\000\0045\004\000\000#( \000\002\032B\000\000\021T\020\000\001\r!\000\000\010^\024\000\000F\000\000\000\0045\004\000\000\"y\020\000\002\031\033\000\000\021T\020\000\001\014j \000\010f\014\000\000F0`\000\0043\006\000\000#\0300\000\002\031C\000\000\021L\030\000\001\014a@\000\010f\014\000\000F0`\000\0045\004\000\000#( \000\002\032B\000\000\021T\020\000\001\r!\000\000\010j\010\000\000FP@\000\0045\004\000\000#( \000\002\032B\000\000\021Q \000\001\014p@\000\010j\010\000\000F8 \000\0045\004\000\000#( \000\002\032B\000\000\021T\020\000\001\014}@\000\010j\010\000\000FP@\000\0042N\000\000#( \000\002\032B\000\000\021T\020\000\001\r!\000\000\010j\010\000\000F.p\000\0045\004\000\000#( \000\002\031}\000\000\021T\020\000\001\r!\000\000\010j\010\000\000FP@\000\0045\004\000\000#( \000\002\032B\000\000\021T\020\000\001\r!\000\000\010j\010\000\000FB`\000\0043\024\000\000#\034\020\000\002\031a\000\000\021N\010\000\001\014i \000\010f(\000\000FP@\000\0045\004\000\000\"x0\000\002\032B\000\000\021R(\000\001\r\027@\000\010fZ\000\000Ep`\000\0045\004\000\000#\000 \000\002\032B\000\000\021S<\000\001\r!\000\000\010j\010\000\000FG\000`0\030\014\006\003\001@`0\030\014\006\003\001@`0\020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\nt\nI\034I'\021g\"\003ABt4\030mvs\030t *[M6s=nn\020\010Mf\0135J\"\035\010\004V (\000\000+P*$r%\034G\035\010\0167KMFt6\016D\005+9Vn7]mb\0039Bm2ND\002+\020\024\000\000\013lF+X^c7[N6{1J\000\000\000\000\002+T\\%:KDW)8Ju\000\025-f[9^w7\010\010W\023I^r\000\000\000\002+Lt \022\\a \001=Jt1Klw\023=jp\000\000\004UZxt]\035\011+5qi::\022Z\016P\001=Jt1Kn\006\013Mfw2\000\004UZxt]\035\011+5qi::\022Y\007\"+\020t%-WG%ihJ[/\016KSQ\025f\n\000\000\000\005*M\nR\000\000\000\000\001<\000\000\000\013lF+X^n:[\r@\000\000\000N7H\010W\023I^r\000\000\000\000\002U\\k7\033nvq\001Po9]\000\000\000\000\000H7\\nB\0039Bm2H\rF{=Vu8\010\014f\013%Xu9\031 \000\000\000\000U7\032mf{]\\ 9Y.'3\025d 2\\N&{H\000\000\000\000\011fy\001Bd2\034LW\033L@a9\\mv\033%Bt2Y\004\007;%hh\020\033L\026k\024\000\000\003A @\000\034\n\020\000\001`R\000\000\016\005\036\000\000p*P\000 \020\010\004\002\001\000@ \020\n\005\002A P \020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\010@@ \020\010\004\002\001\000@ \020\010\004\002\001\000@\010\004\002\001\000@ \020\010\004\002\004\002\001\000@ \020\010\020(\024\n\005\002A\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\020\010\004\002\001\000A\004B!\020H$\020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@!\000@ \020\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\004\002\001\000@ \020\010\004\002A P(\024\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\002\020\020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\002\001\000@ \020\010\004\002\001\000A\000@ \020\010\004\002\004\n\005\002A P \020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000D\002\001\000@ \020!\020H$\022\011\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010 \020\010\004\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\022n3\032-fKQr\000\000\000\000\004s\005\034\000(\023j4J`\000\000\000\000\000\000\000\024\000\000\000\006 \000\000\001zb\023<\034R>b\036VQ'\031LTP\177u\011tSO$U]h\021OF%sPV \014(2+\rt\032\r\003CI\177su- NtGd`\035\031\035\"T~u~s_O\007\177\000\000\000\000\000\000\000\004\001\020\000\000\000\000\000\000\002\0012\000\000\000\000\000\000\001\001\017 \000\000\000\000\000\000@ab\000\000\000\000\000\000 >\r \000\000\000\000\000\020%h$\000\000\000\000\000\010\026\030K \000\000\000\000\004\014_/\004\000\000\000\000\002\007\033M2@\000\000\000\001\004\002P\027d\000\000\000\000B\033R\016n@\000\000\000!\033#)%\010\000\000\000\020T#\004sJ@\000\000\010-5s\010\036H\000\000\004\0301Wu\023\r\000\000\002\r\003C\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\026v\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030C\\\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\0108\000\000\030C@\000\001D\034\000\000\014!`\000\000b\016\000\000\006\020p\000\0001\007\000\000\003\0108\000\000\030C@\000\001D\034\000\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000V(\000\003\0106@\000\030*|\000\001D\033 \000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\0105\000\000\030*|\000\001BW`\000\014\027&\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001BW`\000\014\025>\000\000a+p\000\006\020a\000\0000Ux\000\003\005/@\000\030B`\000\001BW`\000\014\025>\000\000a+p\000\006\n_\000\0000Ux\000\003\005/@\000\030*|\000\001D\025\000\000\014\025L\000\000b\rP\000\006\020m\000\0001\006h\000\003\010(@\000\030B\034\000\001BW`\000\014\025>\000\000b\011`\000\006\n_\000\0001\010@\000\003\005j\000\000\030D\024\000\001BW`\000\014\025>\000\000b\020 \000\006\n_\000\0001\007P\000\003\005/@\000\030*|\000\001D\030 \000\014\035\024\000\000aUP\000\006\016J\000\0000t\010\000\003\006V@\000\0308`\000\001C&`\000\014\0326\000\000aS0\000\006\r\033\000\0000iX\000\003\006M@\000\0304l\000\001C&`\000\014\0326\000\000aUP\000\006\r-\000\0000jh\000\003\006V@\000\03054\000\001C+ \000\014\032Z\000\000as \000\006\r-\000\0000jh\000\003\006V@\000\030<\010\000\001C_\000\000\014\032Z\000\000aUP\000\006\016n\000\0000jh\000\003\006V@\000\03054\000\001C+ \000\014\035:\000\000aUP\000\006\r-\000\0000jh\000\003\006V@\000\03054\000\001CU`\000\014\032Z\000\000aUP\000\006\r-\000\0000jh\000\003\007(@\000\03054\000\001C+ \000\014\032Z\000\000aUP\000\006\r-\000\0000jh\000\003\006V@\000\030P\000\001Cu\000\000\014\037(\000\000b\0000\000\006\020\003\000\0000{\030\000\003\007Y@\000\030=L\000\001Cl`\000\014\036f\000\000av0\000\006\0173\000\0000|0\000\003\007c\000\000\030>\030\000\001Cq@\000\014\037\014\000\000ax`\000\006\0173\000\0000{\030\000\003\007Y@\000\030=L\000\001Cl`\000\014\036f\000\000av0\000\006\0173\000\0000{\030\000\003\007Y@\000\030=L\000\001Cl`\000\014\036f\000\000av0\000\006\0173\000\0000{\030\000\003\007Y@\000\030=\000\000\001Cl`\000\014\036f\000\000av0\000\006\0173\000\0000{\030\000\003\007Y@\000\030=L\000\001Cl`\000\014\037\014\000\000ax`\000\006\017F\000\0000|0\000\003\007c\000\000\030>\030\000\001Cl`\000\014\036f\000\000av0\000\006\0173\000\0000{\030\000\003\007Y@\000\030=L\000\001Cl`\000\014\036f\000\000av0\000\006\0173\000\0000{\030\000\003\007Y@\000\030=L\000\001Cl`\000\014\036f\000\000av0\000\006\017 \000\000P\000\002\000\001\000\0000\000\020\000\005\000\001@\0008\000\020\000\004@\001 \000,\000\014\000\003 \000p\000\036\000\010\000\000\000\000\031\010L\000\001HW`\000\014E>\000\000d#\020\000\006\"_\000\0002\025x\000\003\021/@\000\031\n|\000\001HW`\000\014E>\000\000d\014p\000\006 s\000\0002\025x\000\003\0207@\000\031\005\010\000\001HW`\000\014C\n\000\000d\031\020\000\006!I\000\0002\014H\000\003\020d@\000\031\006$\000\001H2 \000\014C\022\000\000d\031\020\000\006!I\000\0002\025x\000\003\021/@\000\031\n|\000\001HW`\000\014E>\000\000d+p\000\006\"_\000\0002\025x\000\003\021/@\000\031\n|\000\001H5`\000\014E>\000\000d+p\000\006\"_\000\0002\025x\000\003\021/@\000\031\n|\000\001HW`\000\014E>\000\000d+p\000\006\"_\000\0001a@\000\003\021/@\000\031\n|\000\001HW`\000\014E>\000\000d+p\000\006\034\n\000\0002\025x\000\003\021/@\000\031\007,\000\001HW`\000\014E>\000\000d+p\000\006\"_\000\0002\025x\000\003\021/@\000\031\n|\000\001HW`\000\014E>\000\000d+p\000\006!{\000\0002\020@\000\003\021/@\000\031\n|\000\001HW`\000\014B<\000\000d!\000\000\006\"_\000\0002\025x\000\003\016\003\000\000\031\n|\000\001H\035`\000\01482\000\000d&p\000\006\034\006\000\0002\025x\000\003\021\016@\000\031\n|\000\001G\002`\000\014E>\000\000d+p\000\006!\006\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@n3\000\000\006K9Rt<@\000\000\003\005\\\000\000\000\000ff \000\0068\000\000\0003@\000\000\003\034\000\000\000\031`\000\000\001N\000\000\000\014p\000\000\000g\000\000\000\0068\000\000\0003?@\000\003\033|\000\000\031_`\000\001M~\000\000\014op\000\000g\000\000\000\0068\000\000\0003@\000\000\003\034\000\000\000\031`\000\000\001N\000\000\000\014p\000\000\000g\000\000\000\0068\000\000\0003@\000\000\003\034\000\000\000\031`\000\000\001N\000\000\000\014p\000\000\000g\000\000\000\0068\000\000\0003@\000\000\003\034\000\000\000\031_`\000\001N\000\000\000\014p\000\000\000g\000\000\000\0068\000\000\0003@\000\000\003\034\000\000\000\031`\000\000\001N\000\000\000\014p\000\000\000g\000\000\000\0066^\000\0003@\000\000\003\034\014@\000\032\010L\000\001P@\000\000\r\003t\000\000g\024p\000\006B\014\000\0004\020\000\000\003!\011Cds%2Kv\021\033ae\023v\021u5\n9Le%\007\177(O%\034z%-nA\014|2/\035\007\006\000bC\022Xo!@\000i- \000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004T\000\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i_ \000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\033z\000\000i_P\000\006M}\000\0004oh\000\003&~@\000\0327t\000\001S? \000\r\033z\000\000i_P\000\006M}\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R8`\000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\033n\000\000i\033P\000\006I]\000\0004U\020\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006I]\000\0004Mh\000\003$n@\000\0327P\000\001R7 \000\r\023:\000\000i]0\000\006I]\000\0004Mh\000\003$n@\000\032&t\000\001R7 \000\r\023:\000\000i\033P\000\006Mg\000\0004N \000\003$n@\000\032&t\000\001R7 \000\r\033H\000\000i[P\000\006I]\000\0004Mh\000\003&m\000\000\032&t\000\001S3 \000\r\025&\000\000iXP\000\006I]\000\0004Mh\000\003&a\000\000\032&t\000\001S.`\000\r\023:\000\000i\033P\000\006Mt\000\0004gH\000\003&\023\000\000\0323d\000\001S\011@\000\r\030L\000\000iIp\000\006LH\000\0004d@\000\003&$\000\000\0322 \000\001S\022\000\000\r\031\020\000\000iI\000\000\006L=\000\0004ch\000\003&\023\000\000\0321\030\000\001S\011@\000\r\030L\000\000iD`\000\006L&\000\0004b0\000\003&\033\000\000\0321X\000\001S\r@\000\r\030l\000\000iF`\000\006L6\000\0004b0\000\003&\023\000\000\0321\030\000\001S\011@\000\r\030L\000\000iD`\000\006L&\000\0004b0\000\003&\023\000\000\0321\030\000\001S\011@\000\r\030L\000\000iD`\000\006L&\000\0004b0\000\003&\023\000\000\0321\030\000\001S\004`\000\r\030L\000\000iD`\000\006L&\000\0004b0\000\003&\023\000\000\0321\030\000\001S\011@\000\r\030L\000\000iF`\000\006L6\000\0004c0\000\003&\033\000\000\0321X\000\001S\r@\000\r\030L\000\000iD`\000\006L&\000\0004b0\000\003&\023\000\000\0321\030\000\001S\011@\000\r\030L\000\000iD`\000\006L&\000\0004b0\000\003&\023\000\000\0321\030\000\001S\011@\000\r\030L\000\000iD`\000\006L&\000\0004a\030\000\005\000\000\020\000\010\000\003\000\001\000\000(\000\014\000\003@\001\000\000$\000\n\000\002`\000`\000\032\000\007\000\001p\000@\000\000 PH4\"\025\014\000\000\030,&\033\021Jf\000\000\006\003\011Hf4\032MFsAd\000\000\000\000\000\000\000\000\000\000\000\000 \020\010\004\002\001",0x1151); - private static final int[] _data4 = decodeData("\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006n]\000\0009Ah\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r]>\000\000s\003P\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033;\004\000\001f\006`\000\000\000\000\000\000\000\000\000\000\000\000\000 \0006v\020\000\003L\014@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\0130\000\007\030\021\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001f\026 \000\0160\036\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003L+@\000\034`4\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\030[`\0009A8\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\01613@\000s\002P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\034b_\000\001f\004`\000\000\000\000\000\000\000\000\000\000\000\000\000 \0009H\020\000\003L\031@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\0170\000\007\0301\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001f `\000\0160j\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\00372\000\000\034aT\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006ne\000\0009B8\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r]L\000\000s\004P\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\034d\020\000\001f\022 \000\000\000\000\000\000\000\000\000\000\000\000\000 \0009Gr\000\003L'@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\017`\000\007\030M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001f\0368\000\0161\026\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\0038-\000\000\034.l\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006p\\\000\0008]@\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\ra<\000\000q:P\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033C\000\000\001bt@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0009H(\000\003Eg@\000\011\034\000\000\000\000\000\027(\000\000\000\000\000$ \000\000\000\000\000\035 \000\000\000\000\001\016@\000\000\000\000\005u\000\000\000\000\000\0040\000\000\000\000\000\027T\000\000\000\000\000\021\030\000\000\000\000\000\036P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\030t\000\0009F`\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0161f\000\000s\rP\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\034cH\000\001f\032aqjn:\032.Fc\025H>\000\000\000\0007\033\030\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:6\000\000\000\002\020\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\031\004\000\000\000\004\"\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0161|\000\000\000\010H\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033S4\000\000\000\021\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007&p\000\000\000\002@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nMp\000\000\000E \000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\034\000\000\000\001\013\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:8@\000\000\002\027\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006tr\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rif\000\000\000@\014\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033SP\000\000\001\000(\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007'(\000\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nN`\000\000\004\001@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\035`\000\000\030\"\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:<\000\000\0000T\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006ty\000\000\000QD\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0162\000\000\000\001$\010\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033Sh\000\000\000A\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007'X\000\000\001\002@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nO@\000\000\002\005 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\037 \000\000\004\013\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:?\000\000\000\030\013\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006t\177\000\000\00006\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rj\000\000\000\000a,\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033T\004\000\000\001CX\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007(\020\000\000\003\010 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000nP0\000\000\006\022`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]!\000\000\000\014-@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:B@\000\000\030k\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u\006\000\000\0001v\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rj\016\000\000\000d,\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033T \000\000\001IX\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007(H\000\000\003\0250\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nQ \000\000\006.`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\"`\000\000\014u@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:F\000\000\000\031{\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u\r\000\000\00036\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rj\034\000\000\000f,\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033S0\000\000\000\020@\000\000\000\000\000\000\000\000\000\000\000\000\000 \0009H \000\000\000!\020\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\017`\000\000\000B@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\033 \000\000\001\005@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:7\000\000\000\000\014\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006to\000\000\000\004\032\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\ri`\000\000\000\0108\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033SD\000\000\000\020x\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007'\030\000\000\002\000 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000nQp\000\000\002C`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]$\000\000\000\004\010\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:H@\000\000\010\021\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\031\001\000\000\000B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rj$\000\000\000bh\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033TL\000\000\001GP\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007) \000\000\003\033 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000nRP\000\000\006>@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]%@\000\000\004\006@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:K@\000\000\010\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006u\030\000\000\000\020$\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0162\002\000\000\001\000H\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033Td\000\000\000B \000\000\000\000\000\000\000\000\000\000\000\000\000\000\0007)P\000\000\001\004P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000nS0\000\000\002\005`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]'\000\000\000\000\014@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:N@\000\000\000\032\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u\036\000\000\000\0006\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rj>\000\000\000\000p\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033U\000\000\000\000\001h\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007*\010\000\000\000\003`\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nT \000\000\000\007`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001](`\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:R\000\000\000\010 \000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u%\000\000\000\020B\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rjL\000\000\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033U\034\000\000\000B\020\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007*@\000\000\001\0040\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\020 \000\000\002\006\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]* \000\000\004\014@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:U\000\000\000\010\032\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u+\000\000\000\0206\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rjX\000\000\000 p\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033U4\000\000\000Ah\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007*p\000\000\001\003p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000nUp\000\000\002\007@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\033\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003LB\000\000\000\002\001\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\030~\000\000\000\004\004\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\riZ\000\000\000\010\014\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033S8\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000 \0007&x\000\000\000 P\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nN\000\000\000\000A@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]\034 \000\000\001\003@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:G@\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\031\003\000\000\000\020\002\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rj`\000\000\000 \010\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\034cl\000\000\000@\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \0009Gd\000\000\001\000@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nV\020\000\000\002\001 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\001],@\000\000\004\003\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:Y@\000\000\014\007\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u4\000\000\000\030\020\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rjj\000\000\0000$\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033UX\000\000\000`P\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007)\000\000\000\001\0010\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nR\020\000\000\002\003\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]-`\000\000\020\010\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:\\\000\000\000 0\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006u9\000\000\000A \000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rjt\000\000\001\003@\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033Ul\000\000\002\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007+`\000\000\004\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nWP\000\000\0104\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]/@\000\000\020x\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:9@\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006tt\000\000\000 \002\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rj~\000\000\000`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033V\000\000\000\001@@\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007,\010\000\000\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nX \000\000\006\n\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]0`\000\000\014\034\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:b\000\000\000\030@\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006uE\000\000\0001\020\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rk\014\000\000\000b`\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033V\034\000\000\001F\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007,@\000\000\003\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000nY\020\000\000\006\036\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]2@\000\000\014D\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:e@\000\000\031\n\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006uL\000\000\00020\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rk\032\000\000\000dh\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033V8\000\000\001J@\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007,x\000\000\003\025 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000nZ\000\000\000\006.\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001]4 \000\000\014]\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003:i\000\000\000\031H\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006uS\000\000\0003\024\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rk(\000\000\000f`\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033VT\000\000\001N@\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007-0\000\000\003\035 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000nZp\000\000\006>\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001_\026`\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003L?@\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006|]\000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\rXB\000\000,\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033xL\000\000X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0009HR\000\0011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\021 \000\002b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001_E\000\000\005D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003?\n@\000\013\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\007\031\005`\000\026\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r|.\000\000,0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033x`\000\000X`\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007qP\000\0012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000oc0\000\002e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001f\037`\000\005\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003?\016\000\000\n|\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006~\035\000\000\025x\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r|>\000\000-P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033y\000\000\000[ \000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0009G\030\000\0016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\016@\000\002[\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001f\034@\000\005\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003L<@\000\013,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006~\"\000\000\025H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r|F\000\000+\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033y\024\000\000V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007r0\000\001,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000oe\000\000\002^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001_J@\000\005$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003?\026@\000\n\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006l\r\000\000\0258\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r|^\000\000,p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033y@\000\000Y@\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0009H\002\000\001+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000of\020\000\002h\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001[W \000\005*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\0037/@\000\nT\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006~2\000\000\025 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\0162\006@\000+P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033/P\000\000W \000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007s\030\000\001)@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000s\016\\\000\002S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001_M\000\000\005T\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003L:@\000\013(\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006~5\000\000\025`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r|l\000\000+@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\033y`\000\000T \000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007sH\000\0014@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000og0\000\002P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001_O \000\005\034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003?\037\000\000\n4\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\006~?\000\000\024`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\r}\002\000\000)0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\034cp\000\000R@\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0007t\030\000\001$@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000ohP\000\002F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001_Q@\000\005\014\000\000\000\000\000\000\000\006~Y\000\0007uX\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016*\022\000\000rT0\000\007\025=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\034\001P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Laj^4$4s\033;n`\000\n\000\005@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000r[\000\000\007\025X\000\0009-P\000\003Jm\000\000\034Vp\000\001e7\000\000\016+<\000\000r[`\000\007\025`\000\0009.\000\000\003Jq\000\000\034W\010\000\001e9\000\000\016+H\000\000r\\`\000\007\025f\000\0009.@\000\003Jt\000\000\034W(\000\001e:@\000\016+X\000\000r]@\000\007\025n\000\0009.p\000\003Jx\000\000\034W@\000\001e<@\000\016+d\000\000r^@\000\007\025t\000\0009/0\000\003J{\000\000\034W`\000\001e>\000\000\016+t\000\000r_ \000\007\025|\000\0009/`\000\003J\177\000\000\034Wx\000\001e@\000\000\016,\000\000\000r` \000\007\026\002\000\00090 \000\003K\002\000\000\034X\030\000\001eA@\000\016,\020\000\000ra\000\000\007\026\n\000\00090P\000\003K\006\000\000\034X0\000\001eC@\000\016,\034\000\000rb\000\000\007\026\020\000\00091\020\000\003K\011\000\000\034XP\000\001eE\000\000\016,,\000\000rb`\000\007\026\030\000\00091@\000\003K\r\000\000\034Xh\000\001eG\000\000\016,8\000\000rc`\000\007\026\036\000\00092\000\000\003K\020\000\000\034Y\010\000\001eH@\000\016,H\000\000rd@\000\007\026&\000\000920\000\003K\024\000\000\034Y \000\001eJ@\000\016,T\000\000re@\000\007\026,\000\00092p\000\003K\027\000\000\034Y@\000\001eL\000\000\016,d\000\000rf \000\007\0264\000\00093 \000\003K\033\000\000\034YX\000\001eN\000\000\016,p\000\000rg \000\007\026:\000\00093`\000\003K\036\000\000\034Yx\000\001eO@\000\016-\000\000\000rh\000\000\007\026B\000\00094\020\000\003K\"\000\000\034Z\020\000\001eQ@\000\016-\014\000\000ri\000\000\007\026H\000\00094P\000\003K%\000\000\034Z0\000\001eS\000\000\016-\034\000\000ri`\000\007\026P\000\00095\000\000\003K)\000\000\034ZH\000\001eU\000\000\016-(\000\000rj`\000\007\026V\000\00095@\000\003K,\000\000\034Zh\000\001eV@\000\016-8\000\000rk@\000\007\026^\000\00095p\000\003K0\000\000\034[\000\000\001eX@\000\016-D\000\000rl@\000\007\026d\000\000960\000\003K3\000\000\034[ \000\001eZ\000\000\016-T\000\000rm \000\007\026l\000\00096`\000\003K7\000\000\034[8\000\001e\\\000\000\016-`\000\000rn \000\007\026r\000\00097 \000\003K:\000\000\034[X\000\001e]@\000\016-p\000\000ro\000\000\007\026z\000\00097P\000\003K>\000\000\034[p\000\001e_@\000\016-|\000\000rp\000\000\007\027\000\000\00098\020\000\003KA\000\000\034\\\020\000\001ea\000\000\016.\014\000\000rp`\000\007\027\010\000\00098@\000\003KE\000\000\034\\(\000\001ec\000\000\016.\030\000\000rq`\000\007\027\016\000\00099\000\000\003KH\000\000\034\\H\000\001ed@\000\016.(\000\000rr@\000\007\027\026\000\000990\000\003KL\000\000\034\\`\000\001ef@\000\016.4\000\000rs@\000\007\027\034\000\00099p\000\003KO\000\000\034]\000\000\001eh\000\000\016.D\000\000rt \000\007\027$\000\0009: \000\003KS\000\000\034]\030\000\001ej\000\000\016.P\000\000ru \000\007\027*\000\0009:`\000\003KV\000\000\034]8\000\001ek@\000\016.`\000\000rv\000\000\007\0272\000\0009;\020\000\003KZ\000\000\034]P\000\001em@\000\016.l\000\000rw\000\000\007\0278\000\0009;P\000\003K]\000\000\034]p\000\001eo\000\000\016.|\000\000rw`\000\007\027@\000\0009<\000\000\003Ka\000\000\034^\010\000\001eq\000\000\016/\010\000\000rx`\000\007\027F\000\0009<@\000\003Kd\000\000\034^(\000\001er@\000\016/\030\000\000ry@\000\007\027N\000\0009[=z?bU*U*U*U\037lw\014-D]\022A\017|`307\r\000V(\000\001+K\034,bY\004\000\014t'\016\"ETY\177@\000\000\000\000\000\000\000\177i\020~jD!40?x\000\000\000\000\000\000\000_|\000\000\000\000\000\000\000\037F~!r\020\000:g\007\1778U\016`\000\000\000\003rR\\\013|\027;t!\177 \000\000\000\000\000\000\000\177U*U*U*U*?p\000\000\000\000\000\000\000\037}bT;\024W\002\177\020h\000\000\000\000\000\000\000\007|SxPJ\"S]s~6\014JIr;6)\177\"t0*#T\010\004\177U*U*\030y\031\032?m[6m[>W\177\037xf3\031Lf3\001P\001\000\000\000\000\000\000\000\007~v\034\023`\000\000\000\013qx_`\n\026`\037)\177]G\004w\007 \037ty\027\nQlR\\\013|\001R[C|\027cfY\037yEd\030\000\000\000\000\017|br\013}z\034{wb\002qB\014T\033\007\023s\030ni9/TM\001zw= q:&_D~\021+\032Ur.xX?30-A5z{\023\037q*U*U*U\037\020\000\000\000\000\000\000\000\000\007\177I\007vT \000\000\003nBha\r\030L3\011w!40FL\000\000\000w#\014bE`\033Af?r\027f\006n'\021\003\037x\000\000\000\000\000\000\000\016t1L(\\\000\000\000\007\027\\\0164%\020\0228\024\013@\000\000\000\000\000\000\001\177N\000\000\000\000\000\000\000\177R\000\000\000\000\000\000\000?x\000\000\000\000\000\000\000^j\037.Mz\0208j\017D\036tz{4Xq\007i\023y\037\000N\024USwh\003 \014rbY\001}-A6\005X\025\013\\\177%*U*U*U\030?p\000\000\000\000\000\000\000\037\034\000\000\000\000\000\000\000\020.\000\000\000\000\000\000\000\007|\000\000\000\000\000\000\000\004\001\000\000\000\000\000\000\000\001\177@\000\000\000\000\000\000\000\177p\000\000\000\000\000\000\000=rv'%V?*|\037\026\\^4(W\034uOXqo\r/1\177\037'rP\006@\031`X:S|\004\"\021\010D\037\n1\177\nU*U*U*$\177`\000\000\000\000\000\000\000?x\000\000\000\000\000\000\000_|\000\000\000\000\000\000\000\017}\022\017m(D\026F\007H\r\030L3\n\027\000{wMkKmX\n7\031|(~D(\006y\025\030~C\"6\036/\023\024\002?6[$,JX\006(\037eLO$\020\rV\033Ox\021\010D\"\020\177\036GoY)`t_^ZCxJp\017\031<\024~I|`&{FQQ\003 ~Wmr\037n\004\014*?A\011\\>K:\011\023\037jt\033PnfA\177\017zU*U*U*Xoc?\020y\010\000\0353@\000\000\000\001\000\000\000\000\002\r \000\000\000\000\000\000\000\003%7\007x/GM2~\033y\007H@\001k\034\036$\000\000\000\000\000\000\000\000\000sBP\000\007\023N\000\0009\034q\177\177\177\177p\000\010\000\000\000\001`pZ\007`\000\000\000\000\000\000\000\177x\000\000\000\000\000\000\000?i!tv\033=\006a\037qQ\"D-AHYOz4 M!\037<~g\177\000\000\000\000\000\000\000\004\001\020\000\000\000\000\000\000\002\0008\000\000\000\000\000\000\001\000\024\000\000\000\000\000\000\000?p\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\017~\000\000\000\000\000\000\000\010\002 \000\000\000\000\000\000\000\000\031H\000?p\000\000\005\177@\000\000\000\000\000\000\000\177`\000\000\000\000\000\000\000?x\000\000\000\000\000\000\000 |\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\027\177\000\000\000\000\000\000\000\004\016\177\177\177\177p\000\000\002\007@\000\000\000\000\000\000\000\177_\177\177rJ\001V*?p\000\000\003-?J5\037s\177\177|R@5J@\000jp\000\002\001",0x1df); + private final void run_54200() throws ExecutionException { /* 0x54200 - 0x54400 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x54200: + r2 = r2 + 1; + r2 = (r2 & 0xffffffffL) < (1 & 0xffffffffL) ? 1 : 0; + /* Next insn is delay slot */ + pc = 0x541b0; + run_54000(); + return; + case 0x54400: + pc = 0x54400; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + private final void run_54400() throws ExecutionException { /* 0x54400 - 0x54600 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x54400: + r29 = r29 + -64; + writePages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff] = r18; + writePages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff] = r17; + writePages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff] = r16; + writePages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff] = r31; + r16 = r4 + r0; + r17 = r7 + r0; + r18 = readPages[(r28 + -31412) >>> 12][((r28 + -31412) >>> 2) & 0x3ff]; + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x5448c; + continue; + } + writePages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff] = r5; + writePages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff] = r6; + /* Next insn is delay slot */ + r31 = 0x54438; + pc = 0x50e00; + run_50e00(); + return; + case 0x54438: + r5 = readPages[(r29 + 40) >>> 12][((r29 + 40) >>> 2) & 0x3ff]; + r6 = readPages[(r29 + 44) >>> 12][((r29 + 44) >>> 2) & 0x3ff]; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r17; + r4 = r16 + r0; + r7 = r2 + r0; + /* Next insn is delay slot */ + pc = r18; + r31 = 0x54454; + return; + case 0x54454: + r3 = r0 + -1; + if (r2 != r3) { + /* Next insn is delay slot */ + pc = 0x54470; + continue; + } + r2 = r0 + 138; + writePages[(r17 + 0) >>> 12][((r17 + 0) >>> 2) & 0x3ff] = r0; + writePages[(r16 + 0) >>> 12][((r16 + 0) >>> 2) & 0x3ff] = r2; + r2 = r0 + -1; + case 0x54470: + r31 = readPages[(r29 + 60) >>> 12][((r29 + 60) >>> 2) & 0x3ff]; + r18 = readPages[(r29 + 56) >>> 12][((r29 + 56) >>> 2) & 0x3ff]; + r17 = readPages[(r29 + 52) >>> 12][((r29 + 52) >>> 2) & 0x3ff]; + r16 = readPages[(r29 + 48) >>> 12][((r29 + 48) >>> 2) & 0x3ff]; + r29 = r29 + 64; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x5448c: + /* Next insn is delay slot */ + r31 = 0x54494; + pc = 0x50e00; + run_50e00(); + return; + case 0x54494: + r7 = r2 + r0; + writePages[(r29 + 16) >>> 12][((r29 + 16) >>> 2) & 0x3ff] = r17; + r4 = r16 + r0; + r5 = r29 + 24; + r6 = r0 + r0; + /* Next insn is delay slot */ + pc = r18; + r31 = 0x544b0; + return; + case 0x544b0: + /* Next insn is delay slot */ + pc = 0x54454; + continue; + case 0x54600: + pc = 0x54600; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private final void run_54600() throws ExecutionException { /* 0x54600 - 0x54800 */ + int addr, tmp; + for (;;) { + switch (pc) { + case 0x54600: + if (r5 == r0) { + /* Next insn is delay slot */ + pc = 0x54624; + continue; + } + r2 = (r6 & 0xffffffffL) < (256 & 0xffffffffL) ? 1 : 0; + if (r2 == r0) { + /* Next insn is delay slot */ + pc = 0x54630; + continue; + } + addr = r5 + 0; + tmp = readPages[(addr) >>> 12][((addr) >>> 2) & 0x3ff]; + tmp = (tmp & ~(0xff000000 >>> ((addr & 3) << 3))) | ((r6 & 0xff) << (((~addr) & 3) << 3)); + writePages[(addr) >>> 12][((addr) >>> 2) & 0x3ff] = tmp; + r2 = r0 + 1; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x54624: + r2 = r0 + r0; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x54630: + r2 = r0 + 138; + writePages[(r4 + 0) >>> 12][((r4 + 0) >>> 2) & 0x3ff] = r2; + r2 = r0 + -1; + /* Next insn is delay slot */ + pc = r31; + return; + case 0x547fc: + case 0x54800: + pc = 0x54800; + return; + default: + throw new ExecutionException("invalid address 0x" + Long.toString(pc & 0xffffffffL, 16)); + } + /* NOT REACHED */ + } + } + + private static final int[] _data1 = decodeData("\177\177\177\177x\000\000\000\000\000 \020\010\004\002\001", 0x2); + private static final int[] _data2 = decodeData("\177\177\177\177x\000\000\000\000\000 \020\010\004\002\001", 0x2); + private static final int[] _data3 = decodeData( + "\022\\h6{UXd\020\033Mw!\001`a9\034lR\001\034Js\023KA \000\000\000\000\"\\N&{Ht *[M6s=nn\020\033nW#Ajt\020\031Mw\0235Bt\027\002@\000\002\025dr7\\G\"\0029^ 7].G\003Uh 3\033n&k\005h 9\\\014V\033%Li2Y\005`P\001&u8\034\rw\023QJd\020\031Mw\0235Bt9H\014\027\023\024t\n\005\002$W\030(\024\000\000\000\004W\032%\\v0[\r\026!\001la6\035,Ra\001\\u6XLW\021\001Rs\020\033LV;\005hi;\031'\"\001\034Js\023KA \002\005\006M\"H\005R\003QPe\020\020(4j\024@C9\033n7\033\005fs2[,&c\025d 3\033n\"\0025jl:\032.\006c\024@E7\035M\027\023=\\m2[NG\030(@ ![n\007KIRg4\035\004\002B\014R \030N'\023A4d0\031\r\004\004k\005dc7H\010&\013eJ\000\000\000\nFC%f 4\\d\004\n\r\032E\026\010\016&+1Ja9Y$\003\0018r7\020\n\004%S\025Z\"\024K\004\003\011H@F2XD\003\021@d4\005\010\004\005\0031Bt3\033n&i\001Rn2\031.\006+9He7\035\004\0073\025ds4[mbp\001\002C&Q$\006\033=Ze9H\016vKQP PJ4z1*T\"S\013\022\0029\036 +P*%\022\005\034T,Nd\0063=d 2\031.F\013%Xs\020\034LV\013\020@t4\031$\006C\025Xp\020\031M\026c\024\\\n\020\010\nFC%f 4\\d\0063IJe\020\034mv3Qna9\031%B\003\005\\d\020\036-w)\001Br2H\016v+1Fo6Y$\007#<@r2Y\r\027\033Qdi1\035.F)\001Rt\020\035-f#\025d\n\020\010\0146+Iha4[D\006\033=\\d4]\r\026{9f;\020\030.2\003=jt6\032-f+\020@i7\010\016FC\024@G'\025$\004;\025\\e9\030-B\002Ajb6\032,2\0021Rc2[N6)8\024D2Y\r\026\033\005he2\010\016Fy\001hh2H\016vKMJs:\010\014&+%\\g\020\022$\006+YJr\020\032\014\026!\001hh2H\016\006c\025Bs:\\LR\003=L 9\031,\026#%\\g\005\010\004\006\023=^k9H\rv1\000Pc:\\N&+9hls:\034M\026s\034P)\000\032.5{1Rs:\n\005\020\000\000\000i9Wmg+5De9\n\005\020\0031Jn\024\n \000\000\001Br1]\014\026q R\000\000\000\000\006\013IFc7\\e\002H\000\000\000\000\030.&\033MRn\024\n \000\000\000\000t0[E\002H\000\000\0001[n2A$\000\000\000\034m\026q R\000\000\000\014fc=Bt\024\n \006K9h(\024@\000\000\003\005Hd9\031.7\031 R\000\000\000\r\026s\021Jx4[Lp\000\000\000\0006\033lvK\rBl\020\033Mw \001`o;Y.\"\003=L\000\000\000\000\006s\025Na:\032-vp\000\000\000\000\033-v#UXo\000\000\r\026sQJg2\\D\006#%li9Z-vp\000\000\000\000\033.VcQRp6\032,6\013QRo7\000\000\007\033UDt9\030,7#%^n\000\030,F#%hi7[@\000\000\000\000l7Ym\026\033\005X 9Z\r\0263P@r4Ym\007 \001Br4]\r\006k\025hi1H\0166C%Lt\020\034M\026;!h\000\000\034m\006K\031h 6\031,g \000\000b0[M2\003\011rt2H\rv0\000\000\000\000\032\r\026; @b<]\014R\003=L\000\000\000\000\006c=n 1\036.F)\001^f\000\031n&+\005he9\010\016FC\005\\\000\000\000\000\006;IJa:\031.\"\003QPa7\010\rw\021\001Jq:X-@\000\000\000l2\\n2\003QPa7\000\000\000\0031Js9H\016FC\005\\ 7\\D\006+Eja6\000\000\007#\025ft\020\031Mw\021\001Rn2\\.V\0131Rt<@\016F+Mh 3\033n\"\003\025bu0[\r\027#d\000\000\000\033\rv;%Fa6\010\014\026s\020\000e<\030mG+MRv2H\rw\020\000\000\000\000\033\rv;%Fa6\010\rw\020\000\000a8\034\014Vs\020@t7H\rFKMh\000\000\033n\006+8@i7\031\014W@\000\000s:\030.'!\001Xi9]\000\000\0031Jf:\010\016\006\013IJn:\032\014W\033%f\000\000\000\000\007\033QBr:\010\rv1\001Jx8\034LW\033MRo7\000\014Vs\020@o3\010\014WCAde9\\m\026{8\000\000\000\000\000\025yP\000\001/a\000\000\n|h\000\000Wf@\000\005>4\000\000,\000\000\000\002_\\\000\000\025r\020\000\001/\030\000\000\nzP\000\000WX@\000\005=`\000\000+o`\000\002_\014\000\000\026\026\000\000\0011@\000\000\013\014(\000\000Xi@\000\005FX\000\000,6 \000\002b\"\000\000\026\023\000\000\0011%\000\000\013\n(\000\000XR@\000\005E\024\000\000,) \000\002bJ\000\000\027/@\000\001;\007\000\000\013Y\010\000\000\\p\000\000\005f\024\000\000.h`\000\002vj\000\000\027\030\020\000\001:\r\000\000\013QH\000\000]\022@\000\005j\020\000\000.T\000\000\002u6\000\000\027,`\000\001:q\000\000\013L\010\000\000\\`@\000\005f\004\000\000.0 \000\002yr\000\000\027N\000\000\001>\007\000\000\013p8\000\000_\n\000\000\005y\010\000\000/+@\000\002z \000\000\027S\000\000\001=#\000\000\013n0\000\000^v@\000\005wP\000\000/>@\000\002|\002\000\000\027Vp\000\001=P\000\000\013mX\000\000^*\000\000\005r`\000\000/t \000\002\177\"\000\000\027z\020\000\001?Q\000\000\013}\010\000\000_h@\000\005~D\000\000/t \000\002~t\000\000\027|\020\000\001?Y\000\000\013}H\000\000_l@\000\005~d\000\000/v \000\002\1772\000\000\027w \000\001?:\000\000\013{0\000\000_]\000\000\006\0028\000\0000\023@\000\003\001\014\000\000\030\010`\000\001@F\000\000\014\005x\000\000`%@\000\006\002,\000\0000\026\000\000\003\0010\000\000\030\013\000\000\001@X\000\000\014\005@\000\000`,\000\000\006\005D\000\0000&@\000\003\002*\000\000\030\023 \000\001A\032\000\000\014\011P\000\000`M\000\000\006\006h\000\0000&@\000\003\0024\000\000\030\023 \000\001A\032\000\000\014\016`\000\000`R\000\000\006.h\000\0002n`\000\003\026v\000\000\03170\000\001KV\000\000\014]\020\000\000e]@\000\006-l\000\0002n`\000\003\027\034\000\000\0319 \000\001K;\000\000\014`8\000\000e]@\000\0060\014\000\0002n`\000\003\026v\000\000\03170\000\001K;\000\000\014[X\000\000e]@\000\006-l\000\0002n`\000\003\026v\000\000\03170\000\001K;\000\000\014[X\000\000ez\000\000\006/,\000\0002P`\000\003\026v\000\000\03170\000\001K;\000\000\014[X\000\000e]@\000\006-l\000\0002n`\000\003\026v\000\000\03170\000\001K;\000\000\014[X\000\000e]@\000\006-l\000\0002n`\000\003\026v\000\000\03170\000\001K;\000\000\014[X\000\000e]@\000\006-l\000\0002n`\000\003\026v\000\000\03170\000\001K;\000\000\014[X\000\000e]@\000\006-l\000\0002n`\000\003\030\026\000\000\03170\000\001K;\000\000\014^8\000\000e]@\000\006-l\000\0002n`\000\003\026v\000\000\03170\000\001K;\000\000\014[X\000\000e]@\000\006-l\000\0002n`\000\003\026v\000\000\03170\000\001K;\000\000\014[X\000\000e]@\000\006-l\000\0002n`\000\003\026v\000\000\03170\000\001K;\000\000\014[X\000\000e]@\000\006-l\000\0002n`\000\003\026v\000\000\03170\000\001K;\000\000\014[X\000\000e]@\000\006/\014\000\0003%@\000\003\031x\000\000\031.@\000\001LR\000\000\014cP\000\000f+\000\000\0063p\000\0003'`\000\003\025h\000\000\031S \000\001Mq\000\000\014W \000\000fX@\000\0065\014\000\0002]\000\000\003\025h\000\000\031.@\000\001Jt\000\000\014W \000\000e:\000\000\006+P\000\0002]\000\000\003\025h\000\000\031.@\000\001Jt\000\000\014W \000\000e:\000\000\0061\010\000\0002]\000\000\003\035^\000\000\031.@\000\001N\\\000\000\014W \000\000e:\000\000\006+P\000\0002]\000\000\003\025h\000\000\031.@\000\001Jt\000\000\014W \000\000e:\000\000\006+P\000\0002]\000\000\003\025h\000\000\031.@\000\001Jt\000\000\014W \000\000e:\000\000\006+P\000\0002]\000\000\003\025h\000\000\031.@\000\001Jt\000\000\014W \000\000e:\000\000\006+P\000\0002]\000\000\003\025h\000\000\031d`\000\001Jt\000\000\014W \000\000g\021\005\033Qdi7\031d\006c\025\\g:\032\004\006KL@n7]\004\003\0118\000C7[Nf+Ihe2\010\016Fy\001Rn:\031,v+H@f7\\D\006\023%\\a9\036$\006c=Ni1H\rw\003\025da:\033n\"p\001\nx8\034LW\033MRo7\010\014FK\020@n7]\004\007\023\025hu9\033D\006\011\001\\u6XLW\0218\000T7[d\006k\005\\y\020\011e\00298\000\000\000\023Mr\003YBl:Y$\006;%le7\013@\004#%li9Z-vq\001Dy\020\036LW\023<\\\000\000\000\004W\032U\\k7\033nvq\001^p:\032-vq\000P-\026I.2I8\024\000\000\000\004W\032U\\k7\033nvq\001fw4]\0146A\000P-\022Xe\022p(\000\000\000\000\004W\0325Rs9Z-f9\000Js\027\002@\000\001\025f%9KA \000\001\nr9\033n\"\003%\\ !S\011\022\003\005dg:[,VsQf:\020\000\000\000\000\001\006h7\\lVq\001\006P*H\014F{\025f 7\033nB\003Mjp8\033n'!\001Xo7\031d\007\023\025Ni9]\014W\023L\\\0007\033-w\031Xj0\031\000\000\000\000\000l5\030L\000\000\000\000\0006\032Xf\003\020\000\000\0009\rFV\031@d\000\000\035fc+\014`2\000\000\006c)`b6\000\000\000\0031UFe\030\014@\000\001Pj0\031\000\000\000\000\001Z6\032@\01431QHt;\014@\0029Xj0\031\011eB\001\035\\m7\\fc)@d'\026\010\004s1Tb0\023K\004\0029Xjc\030\014Dra\000Nr\033\r,3\001HN,\020\011ns1UF0\031\011eB\001\034l5\034\014&b90@'\033\r,6)@d'\026\010\004s!T`2\023K\004\002;4l5\023K\004\002;\014l42\035\016c\021\034\000\000\000\000\010W\023I^r\035\010\011fy\001Ze6[n'I\001Lo9\010\014GK9Bm4Xd\006\023ULf2\\E`P\000\000\000\022[\014@\002\r^n;\031.'\033%^n\020\035\014\026\0231J 4[L6{5`l2]\014Rp\000\000\000\000\025-f[9^w7\010\014Vs\r^d4[Lrp\000\000\0008\031.@\003IBw\000\034l7\020\001\022l6\031,v\0131\004l7Xm5#\025dm4[L\027#=d\000\000\023l&S\025Ft$\030.4sUXl*\036.\006(\000\000\000$[\rF+\035Bl&\033mw\002\005Xg7@\016vC%Xe\000\000\000\007+9hi6\000\000\000\002ABr9Z-f9\001fo:\\L6)\001Li6\031$\0029\025f'\005\000\000\000\002\031^u7\031\004\002;tN 4[N7#\025Bd\020\033lb\003\025\\d\026[lbk\031Rl2K@\000\000\0006[\030\033 \000\000\000\000%9J\004V!$@:\020\011.2+LJs\020\n\004W\031\000Js\024ND\002+L\024\000\000\000\000\002+LJs\022\\d\002i\001\014i6\031$\002+LX 6\032-f)\000Jd\020\n\004W\031\000Js\024ND\002+L\024\000\000\006k3\01346[\031L-P\000\000\000S2\\M\026{Uf 2\\N&{H\000\000\000\021.'\023=d\000\000\000\0035YLfm\000\000\000\005;\005dn4[Lp\000m63\031\033 \000\000\001\022n3\033`\000\000\000\000\033-Lffh\000\000\000\"\031,'+\034\000\000\000\023\014\026\023\025X 7\030-V)\001\\o:\010\r\026q\001Xe3\035\rV{Mh 1[mG+5\\.\000\000\n7K5Do6\010\rf\0135J 9]\014\027\023Qf ;Z.FA\001B 9Z\r\0263PZs8\030,6)\001Fh0\\L\026\033QJr\027\000\000\000\000\001\004u3H\r\026q\001\002C&Q%B\003\r^d2H\014f{1Xo;\\`\000\000\000P0<\011/\003Q$\000I6\033\014V;\005XN:[,&+I(y8\031&\000\000\001\022l6\031,v\0131\036b5\031,7\"Qrp2@\000\000\000\000\004\020f\000\000!\025`\000\002\011.\000\000\020Jp\000\001\004W\000\000\010%8\000\000B+@\000\004\022\\\000\000!\025`\000\002\011.\000\000\020Bh\000\001\004W\000\000\010%8\000\000B+@\000\004\022\\\000\000!\025`\000\002\011.\000\000\020Jp\000\001\004W\000\000\010%8\000\000B+@\000\004\022\\\000\000!\025`\000\002\011.\000\000\020Jp\000\001\004W\000\000\010%8\000\000B+@\000\004\022\\\000\000!\025`\000\002\011.\000\000\020Jp\000\001\004\024@\000\010%8\000\000B+@\000\004\022\\\000\000!\025`\000\002\011.\000\000\020Jp\000\001\004W\000\000\010%8\000\000B+@\000\004\022L\000\000!\021`\000\002\011.\000\000\020E(\000\001\004%@\000\010%8\000\000B+@\000\004\022\\\000\000!\025`\000\002\011.\000\000\020Jp\000\001\004W\000\000\010%8\000\000B+@\000\004\022\\\000\000!\025`\000\002\011.\000\000\020Jp\000\001\004W\000\000\010%8\000\000B+@\000\004\022\\\000\000!\01100\000\000\000\000\000\000\000\000\000\010\004\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000 \000\000\004\000\000\001\002\001\000@ \020\010\004\002\001\000@\010\004\000\000\000\000\000\000p8\034\016\007\003A`p8\034\016\007\003A`p8\034\016\007\003A`p8\034\016\007\000\000\000\000\000\030\000\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\000\000\000@\000\000`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\003\001@`0\n7K9ha<\010\014W\023I^r\027\000\000\000\002Mrm1\033mB\003\005Xr2X,GI\001He3\032-f+\020\\\000(\034Mv;IBm\020\030mw+9he9\010\016Vs\021Jf4[LV!8\000\000'\035-V\023\025d 2\033lW\031\001\\o:\010\014fKP@i7\010\006#!\001Di:\034e`\0029jm1\031.\"\003\021^e9H\rf{P@f4]\004\006K8@1\033\010\014&KQf.\000\023NVk\011Jr\020\031\rv+L@n7]\004\0063%h 4[D\003A\001Di:\034e`\000\001\034u6XLW\021\001^u:\010\rv1\001da7\031lRp\000\000\000\000\021Mw+9H 2[LBk=L-3\032-F)\001Rn9]\014V\013\020@o3\010\004wi\034\\\000\000\000\011w+P@o3\010\rV+5^r\000\000\000\000\021\\X\000\001\rE\000\000\010m\020\000\000FY \000\0048H\000\000#C`\000\002\033{\000\000\021TH\000\001\rz@\000\010o<7\\M\026;%\\a6\000\000\000\000\001He3\032-fKQRo7\000\000\005#=^ 2\031,W\0031r 7\031.7#\025H.\020\024LV\033Uds4]LR\0035Bc9\033d\006\033\005Xl9O`\000\000\001\032a1\\Mr\0039^t\020\031\014V3%\\e2\010\005\006{H@w9\033mf9\001fi3[L\027#Ude\024K@\004k\005Fr7@\000\000\0025Bc9\033d\007\003\005da6Y.F+H@t;Z,6)8\000\000\027\013Ef\033\005Xl2Y\004\0063I^m\020\032\014W\023\024\\\000\000\000\000\004k\005Fr7H\014\026cIJa2\036$\006#\025Li7\031,Bp\000\000I6\033\014V;\005XI6[,V#%Bt2S-v#\024\000\000\000\000\nFC\025de\020\030.&)\001jn7\031,V#\025H 8\030.&+9hh2\\lW\0310@y7]$\006[9^w\020\032-f#%de1]\004\006\013\021Hr2\\n6K9N 4\\d\006K5`o9\\m\026\0231J 4\031.&)0@r4Ym\007!|\000T0\\Lv+P@n7]\004\006K8@b0[M2\001 `x\022[\017\002I8\000T0\\Lv+P@o:]\004\006{\030@r0[Lv)\000P%6\031\0072\001\025Xd\020\035\rvy\001La9\n%`\002iJr7\\\014\026;\024@p7Z-g#\025d ;\\L\027\003L@a9\033nVs\020@f9\033mR\001\021Lf\020\035\rr\001\020`0\000\000\000\004\032A* 2\033lW\031\001\\o:\010\0167+A`o9\035\004\007#!Rs\020\034\rw\033QLi<\010\014f{H@t4\032.2\0035\\e6[mfK\014\\\000\000\000\000\004s\025Na:\032.f)\001la6\035,R\0014@c0[Mf{P@c4\033mw\033\024@a2\031\016&+Mfi7\031d\006k=He\027\000\010\027\033MJm1\033\r\026s\034@u7\034nF\013\011Xe\020\020)d)\000FN'SK$*I\036 4[N7#Ijc:\032-vp\000\000\000\000\020.7\033\025Zb6\032-f9\001jn9]\014\026\0231J &\026\010\022\001\r\034O'\026HU\022<@i7\034nG\023UFt4[m`\000\000\000\000 \\n6+5Dl4[Lr\003\011jg3^$\004R5 (\022\036\017\0063\030R 4[N7#Ijc:\032-vp\001\014o:[LB\002M\nD\020\032-g\033Qdu1]\r\026{8@f7\\D\004\032A* ;Z.FA\001Vn7]mb\003\021Jc4[,\026a\001&B!H\014'+\034\\\000\000\000\nFC\024@c4\033n6+8@C(\025$\007+MJs\020\033n\006\033=He\020\014\017\002)@dx\020\030.2\003\004@p9\031,fK`@c7Y\014Ra\001Ho\020\033Mw!\001js2H\016FC%f 6[LVk=\\i1H \000\000\001\022l6\031,v\0131\016r7].\004K9He<\000\000\000\0031Ha\000\034nF\010\001Fm8\000\014\026#\014\000s1\030`\006{IB\0006\031\016\020\003Mhq\000\030n\007\010\001Bd1\\ \000\000\000\000s1\030n\020\000\000\000\0000[LG\010\000\000\000\000\031-w\023D\000\000\000\000\rw\023D\000a9[\016\020\000\000\000\0006\034n'\010\000\000\000\000\034MvcD\000\000\000\000\016&{Ib\000\000\000\000\006K9b\0002\031.\020\003\011Rt8@\000\000\000\001Bs9\034 \000\000\000\000n7\\\000\006k\005`\0002[mP\003\005jg\000\032N7\020\001ft<\000\0167#d\000l1\034\r@\000\000\000\0006\030MVH\000\000\000\000\033\014'3\014\000\000\000\000\rF\023Yf\000\000\000\000\006c\011Fc\000\000\000\000\0031Dc9@\000\000\000\001Xb7\031 \000\000\000\000l1\031.\020\000\000\000\0001\034NP\003\011fr\000\033\014'\023T\000\000\000\000\rF\023IB\000\000\000\000\006\013Mn\0001\\\017 \003\021Jw\000\032-g8\001Xd=\000\016\006C\\\000r7]`\007\023Q\\\0001[\014P\003MJe\000\032-gP\001He=\000\rf+\034\000t9^ \007#ef\000:\030/ \003Qta\000\035\014&\010\001`h=\000\016\006ch\000l2\036 \006c\021p\0001\\\017\020\003\r`x\000\030M\027 \001Tm8\000\016\006+$\000j6[\000\006SMX\0006]N\000\0035ln\000\034\014W\020\001Dr6\000\0146{@\000r2\\\000\007\033\025`\0008\031,\020\003APd\000\035\0147\030\001`l2\000\016G\033\014\000p4\032`\007#\rH\0009\035\r@\003QHc\000\034\r\006\020\001hx<@\016\006c\010\000t<^\000\007C\011B\000<\030lP\003]Hm\000\035l\026H\001ft8\000\016&k\010`\000\000\000\000\007\0235D1\000\000\000\000\003IZb\031\000\000\000\000\001dm1\014`\000\000\000\000r6XF@\000\000\000\0009\033,#(\000\000\000\000\034MV\021X\000\000\000\000\016&k\010n\000\000\000\000\007\0335D0\000\000\000\000\003MZb\030@\000\000\000\001fm1\014@\000\000\000\000s6XF0\000\000\000\0009[,# \000\000\000\000\034mV\021T\000\000\000\000\0166k\010l\000\000\000\000\007\0335D7\000\000\000\000\003\011Dr\030\000\000\000\000\001Db9\014 \000\000\000\000b1\034F \000\000\000\0001\030N#\030\000\000\000\000\030L'\021P\000\000\000\000\014&\023Hj\000\000\000\000\006\023\011d6\000\000\000\000\003\011Dr\033@\000\000\000\001Db9L\000\000\000\000\000b1\034f\020\000\000\000\0001\030N3\020\000\000\000\000\030L'\031L\000\000\000\000\014&\023Lh\000\000\000\000\006\023\011f5\000\000\000\000\003\011Ds\033\000\000\000\000\001Db9M`\000\000\000\000d2X`\006K9F\0001\034L\020\003APy\000\034\rGH\001`h<\000\016\006c`\000t9X@\007#ID\0009]\017 \003MBc\000\034m\027\020\001Bn1@\0166c<\000r6\030 \007\033IJ\0009\034L\020\003MBx\000\033\014\027@\001Hc8\000\r\027\033\014\000l0\\`\007#\005f\0009Z\014\020\003MPx\000\034m\007H\001Bl9\000\014\027\023H\000s1\036\000\006#=`\000:\033n\000\003\005\\e\000\033\017\006\010\001Ta6@\016&{0\000b8\033\000\006\0235R\0001\035L0\003\011ls\000\030L6\030\001Dc9@\014&s\024\000b2\\ \006\023IV\0008\032\016\000\003\rXc\000\034\rG\000\001fe1@\016'#$\000p4\030 \006\0331R\0009\035\0160\003AXa\000\034lVH\001He<@\016GC\004\000tF\000\000\023t0\000\001\037#\000\000\011z\030\000\000OL@\000\004|x\000\000'bP\000\002>F\000\000\023t0\000\001\037#\000\000\011z\030\000\000OQ@\000\004}\014\000\000'h`\000\002>F\000\000\023t0\000\001\037#\000\000\011z\030\000\000OQ@\000\004}\014\000\000'h`\000\002>F\000\000\023t0\000\001\037#\000\000\011z\030\000\000OQ@\000\004}\014\000\000'h`\000\002>F\000\000\023t0\000\001\037#\000\000\011x|\000\000OQ@\000\004}\014\000\000'h`\000\002>F\000\000\023s\020\000\001\037\036\000\000\011xT\000\000Q=\000\000\005\013*\000\000(Vp\000\002E+\000\000\024*\010\000\001\"G\000\000\n\024\020\000\000Q\036@\000\005\011\016\000\000(F\000\000\002F\027\nW\033%\\g\020\033nf+Ifi=\031,B\003\005Hd9\031.7\033%\\g\020\033-v#\024\\\000\000\000\000\004\032A* 2\033lW\031\001\\o:\010\0167+A`o9\035\004\007#!Rs\020\030,F#IJs9Z-f9\001Zo2\031$\0063=d :\032\r\027\031\001Zn2[-vs%F.\000\000\000\000\000\000\000\000\0007\000\000\000\000\000\000\000\000\033@\000\000\000\000\000\037\000\007`\000\000\000\021@\037@\000\000\000\000\000\033\000\006`\001X\000\000\000\004 \000\000\000\000\000\000\000\000\000\001\030\000\000\000\011@\000\0018L\000\000\000\002\000\000\000\000\020\000\000\002\021\000\000\000.\000\000\000\001\010\000\000\000\000\000\000\000\000\000\000\000\000\000\013uX\000\000\000\000\000\000\000\000\000\000\000\000\022i\\X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000]@\0230\004x\000\000\000\000\000\000\000\000<\026\037\rKe3ym\037\010\000\000\023\031Tn0\005O'sI@\000\000\010\004\002\001\000@\004\022\011\004B!\000\020(\024\n\005\002\0000X,\026\013\004\001\001@`0\030\010\002C!Ph4\020\006\007\003A`p \016\017\007Cap@\000\000\031\r\006cAhx>\030\000\000\000\014@\003\020\000d\000\031\000\006 \000\000\000r\000\034@\007\020\001d\0009\000\000\000\005H\0012\000,@\013\020\002d\000\000\000\036 \007H\001r\000<@\017\020\000\000\001\031\000& \011H\0022\000L@\000\000\005d\0019\000. \013H\002r\000\\@\033\020\006d\001Y\0006 \rH\000\000\000|@\037\020\007d\001y\000> \000\000\000\000\000\r@\0070\002l\000{\000\000\022{}_6\000}@\023p\000\000\000\035\n@\000\001hT\000\037\016E \000\000t*\000\000\007\"P\000\000\000\000\000\000\007S(\000\000=\032@\007siT\000\000\036M \000\001tj\000\000\000\000\000\000\001:U\000\000\013U(\001>]*@\000\005jT\000\000.U \000\000\000\000\000\000\037.P\000\001zu\000\037oW(\000\000}:@\000\007kT\000\000\000\000\000\000\004v*\000\000'2P\004~;\025\000\000\023Y(\000\001\035J@\000\000\000\000\000\000^m \000\005vj\000_o6P\000\002{5\000\000\027[(\000\001=Z@\000\rnT\000\000nu \r~w*\000\0007:P\000\003;U\000\000\000\000\000\000\001}z@\000\017oT\001\177~} \000\007wj\000\000?>P\000\000\000\000\000\000\000\000\000\000\000\037\013@\000\003y\\\000\000/U`\000\003}n\000\000\000\000\000\000\000\000\000\000\000\033}8\000\001\177{@\000\000\000\000\000\000\006A \000\0004\n\000\007C P\000\000\032\005\000\000\001P(\000\000\r\002@\000\002i\024\000\000\026I \002y4J\000\000\013$P\000\000Z%\000\000\005R(\000\000M\"@\000\004j\024\000O&Q \000\0025\n\000\000\023(P\000\001\032E\000\000\rV(\000\000m2@\rvk\024\000\0006Y \000\0035J\000\000\033,P\000\002\033\005\000\000\021X(\002\037\rB@\000\010l\024\000\000Fa \000\0046\n\000\000+4P\000\002[%\000+uZ(\000\001-R@\000\nm\024\000\000Vi \000\0067\n\000\00038P\006?\033E\000\000\031\\(\000\001Mb@\000\014n\024\000\000vy \000\0077J\000w{I`\002\010_E@\027_I \000;\017~\000\011?\177<\000\002f\001p\007<^\021\000\"k P\001Z\0376@\006gv<\000'eB \013:=\014\000\037YS`\002\177T-\000\035${P\003\017kr@\036\027Yt\000\007\034}`\010RJ$\000u\032\1770\002~b\037\000#+P@\001,\003\030\000\010ocl\000kU|\000\014}p@\000M=\006`\000vSc\000$,\025p\003L\033\004\000\014YL\024\000_\n(\000\006B\002\032\000\177v\020\000\0025f'\000\014 `0\000*Ve\000\016:F$\000`q\036`\014\0041V?|H?4\000\000\000\000\037\035\010Bh\000\000\000\000\017\037\0044b\000\000\000\000\0077F1\"`\000\000\000\003O@7\003@\000\000\000\001at%\020\020\000\000\000\000mcA\010P\000\000\000\00054|cP\000\000\000\000\000\000\000\000\020\000\000\000\001@\000\000\000\020\000\000\000\001H3\000\000\000\000\000\000\000\014\031@\000\000\000\000\000\000\002\014\000\000\000\022)d0\001Rn3\000\011d\n8\000n0[@\003\001Dd3\032\r&c9`rA!\020hD*\030\000\000\000\000\006\003\011Hf4\032MFsAeBb1Y\014V0\000\000\000\000\n\rg+1X)\000\000\000\000$F`\000\002%e@\000\022.,\000\001\022E`\000\011\027\026\000\000I90\000\004KK\000\000$\\X\000\002%e@\000\022.,\000\001\021= \000\011\014T\000\000I90\000\004E}\000\000$G\020\000\002%e@\000\022$(\000\001\022#@\000\011\022\034\000\000I\021`\000\004I\016\000\000$Hp\000\002$G\000\000\022$8\000\001\022#@\000\011\022\034\000\000I90\000\004KK\000\000$\\X\000\002%e@\000\022.,\000\001\022r`\000\011\027\026\000\000I90\000\004KK\000\000$\\X\000\002%\"\000\000\022+4\000\001\022r`\000\011\025Z\000\000I90\000\004KK\000\000$\\X\000\002%e@\000\022-\004\000\001\022r`\000\011\027\026\000\000I\023@\000\004KK\000\000$\\X\000\002%e@\000\022.,\000\001\022r`\000\011\023\n\000\000I90\000\004KK\000\000$M \000\002%e@\000\022.,\000\001\022r`\000\011\027\026\000\000I90\000\004KK\000\000$\\X\000\002%e@\000\022.,\000\001\022r`\000\011\024\n\000\000I\036\000\000\004Jm\000\000$Vh\000\002%6@\000\022(\004\000\001\022<\000\000\011\027\026\000\000I90\000\004Eq\000\000$\\X\000\002%\r@\000\022-X\000\001\022K`\000\011\013b\000\000I90\000\004F.\000\000$\\X\000\002%R@\000\022.,\000\001\022r`\000\011\0256\014\006\003\001@`0\030\014\006\003\001@`0\030\014\006\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000\000\004[,\000\000%p \000\002/\002\000\000\022mH\000\001\027A\000\000\011<\010\000\000K`@\000\004^\004\000\000%p \000\002/\002\000\000\022`(\000\001\026 \000\000\011<\010\000\000K\002 \000\004[6\000\000%p \000\002.\024@\000\022p\030\000\001\027\001@\000\0118\014\000\000K@`\000\004\\\006\000\000%`0\000\002.\003\000\000\022p\030\000\001\027\001@\000\011<\010\000\000K`@\000\004^\004\000\000%p \000\002/\002\000\000\022x\020\000\001\027A\000\000\011<\010\000\000K`@\000\004^\004\000\000%j@\000\002.!\000\000\022x\020\000\001\027\020@\000\011<\010\000\000K`@\000\004^\004\000\000%p \000\002.;\000\000\022x\020\000\001\027A\000\000\0117\034\000\000K`@\000\004^\004\000\000%p \000\002/\002\000\000\022x\020\000\001\026}`\000\011<\010\000\000K`@\000\004\\z\000\000%p \000\002/\002\000\000\022x\020\000\001\027A\000\000\011<\010\000\000K`@\000\004^\004\000\000%p \000\002/\002\000\000\022x\020\000\001\027%@\000\0118(\000\000KH \000\004\\B\000\000%d\020\000\002.\022@\000\022pP\000\001\027A\000\000\011<\010\000\000K\000`\000\004^\004\000\000%lP\000\002.o\000\000\022q4\000\001\026\001@\000\011<\010\000\000K\020@\000\004^\004\000\000%nx\000\002/\002\000\000\022x\020\000\001\027.\001@`0\030\014\006\003\001@`0\030\014\006\003\001@` \020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\001\000@ \020\010\004\002\001\000P(\024\n\005\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@ D\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\000@ \020\010\004\002\001\000@ \020 \020\010\004\002\001\000A\002A P(\024\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@ \021\000@ \020\010\004\010$\022\011\004B!\000@ \020\010\004\002\001\000@ \020\010\004\002\001\000@ \020\010\004\002\010\004\002\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$[LfK9Rt<@\000\000\000\001\034a'\000\n\004zM\022X\000\000\000\000\000\000\000\005\000\000\000\001H\000\000\000>Ph\034\033do`@\000\010i\035bk5\002[Btia\036\003tO\177\037*j\004w$>&\001iIj\025'w/w\035|x?x\000\000\000\000\000\000\000 \011\000\000\000\000\000\000\000\020\013\020\000\000\000\000\000\000\010\010z\000\000\000\000\000\000\004\006\016\020\000\000\000\000\000\002\003pj\000\000\000\000\000\001\002.B \000\000\000\000\000A1DZ\000\000\000\000\000 ezx \000\000\000\000\0209\\k\024\000\000\000\000\010 \025\001> \000\000\000\004\021]\020vt\000\000\000\002\011Z\032J(@\000\000\001\005\"\030'\034T\000\000\000Bk/\030At@\000\000!C\r?)\030h\000\000\020h\034\033do`@\000\01071Q/\005l(\000\004\035/\002m3SY\000\002\017BXr\030\022\023h\001\010\025WG/\013,1\000D%F\\M7\013^P\" \036\014x\031\033UI\021\026Rh\013\017a%=HNSa\006ylg6@\000\000\000\000\000\000\000\000\000\004\002\001", + 0x123e); + private static final int[] _data4 = decodeData( + "\000\000\000\000\000\000\n`\016\000\000V\001\020\000\000\000\000 \000+\001\010\000\002X\011@\000\000\000\003\000\001,\010 \000\n`F\000\000\000\000\020\000\0050,\000\000+\002p\000\000\000\000P\000\025Ax\000\001,\020\000\000\000\000\003\000\000V\010P\000\0050G\000\000\000\000\020\000\002X'@\000\025BD\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0053\017\000\000\0110\000\000\000R\000\000\000\006\014\000\000\000+ \000\000\002h\000\000\000\023\000\000\000\001\036\000\000\000\011X\000\000\000Q@\000\000\025LD\000\000% \000\000\002R\000\000\000\026`\000\000\001,\000\000\000\014\010\000\000\000L\000\000\000\004|\000\000\000&@\000\000\0028\000\000\000V20\000\001\024\000\000\000\n@\000\000\000Y\000\000\000\006\000\000\000\000/`\000\000\002.\000\000\000\025 \000\000\001\031\000\000\000\011h\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025LT\000\0013K\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+\0318\000\002g\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000V3\020\000\005N(\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001,f@\000\013\034H\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002YN\000\000\0268 \000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0053\035\000\000,p \000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nf@\000\000Y`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025M\010\000\0013?\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+\032(\000\002g\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000V4p\000\005N\020\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001,j \000\013\034\030\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002YU@\000\0269\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0053,\000\000,q`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nfZ\000\000Yc\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+\032p\000\002g.\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000V5p\000\005NX\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001,l\000\000\013\035@\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002YX@\000\026;\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\00532\000\000,t \000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nff\000\000Yh\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025Q,\000\0013b\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+#\020\000\002gJ\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000V6@\000\005O\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001,m \000\013\036\030\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\025\000\000\000\000\004\000\000\000\005@\000+\0330\000\000\000\005 \000\000\000\001\000\000\000\001(\000\nfr\000\000\000\001(\000\000\000\000 \000\000\000(\000\002Y^\000\000\000\000*\000\000\000\000\010\000\000\000\011@\000V7p\000\000\000\n@\000\000\000\002\000\000\000\002 \000\025N\004\000\000\000\002P\000\000\000\000@\000\000\000D\000\0053D\000\000\000\000T\000\000\000\000\020\000\000\000\020\000\001,q`\000\000\000\025\000\000\000\000\004\000\000\000\003`\000+\034P\000\000\000\005 \000\000\000\001\000\000\000\000p\000\ng\030\000\000\000\001(\000\000\000\000 \000\000\000\032\000\002Yg\000\000\000\000*\000\000\000\000\010\000\000\000\006\000\000V:\000\000\000\000\n@\000\000\000\002\000\000\000\0010\000\025NH\000\000\000\002P\000\000\000\000@\000\000\000(\000\0053T\000\000\000\000P\000\000\000\000 \000\000\000,\000\001,u`\000\000\000\023\000\000\000\000\004\000\000\000\001 \000+\035P\000\000\000\004P\000\000\000\002\000\000\000\0018\000\ng:\000\000\000\001\020\000\000\000\000 \000\000\000\014\000\002Yp\000\000\000\000\"\000\000\000\000\020\000\000\000\r@\000V<0\000\000\000\010@\000\000\000\004\000\000\000\003 \000\025O\024\000\000\000\002\020\000\000\000\001\000\000\000\000d\000\0053g\000\000\000\000D\000\000\000\000 \000\000\000\030\000\001,z@\000\000\000\020\000\000\000\000\010\000\000\000\010\000\000+\036p\000\000\000\004\000\000\000\000\002\000\000\000\001x\000\ngb\000\000\000\000x\000\000\000\000@\000\000\000<\000\002Yz\000\000\000\000\036\000\000\000\000\020\000\000\000\016@\000V?\020\000\000\000\007@\000\000\000\004\000\000\000\003@\000\025O|\000\000\000\001`\000\000\000\000@\000\000\000$\000\0054\002\000\000\000\0008\000\000\000\000\020\000\000\000\010\000\001-\001@\000\000\000\016\000\000\000\000\004\000\000\000\001`\000+ P\000\000\000\003 \000\000\000\002\000\000\000\002(\000\nh\032\000\000\000\000h\000\000\000\000@\000\000\000H\000\002Z\010@\000\000\000\032\000\000\000\000\020\000\000\000\021@\000VBp\000\000\000\006@\000\000\000\004\000\000\000\004 \000\025Ph\000\000\000\001@\000\000\000\001\000\000\000\001\030\000\0054\037\000\000\000\000,\000\000\000\000 \000\000\000!\000\001-\011\000\000\000\000\n\000\000\000\000\010\000\000\000\011`\000+\"H\000\000\000\002 \000\000\000\002\000\000\000\002P\000\nhX\000\000\000\000H\000\000\000\000@\000\000\000R\000\002Z\026\000\000\000\000\020\000\000\000\000\020\000\000\000\024\000\000VF\000\000\000\000\003@\000\000\000\004\000\000\000\0050\000\025QL\000\000\000\000@\000\000\000\000\000\000\000\000\020\000\00547\000\000\000\000\014\000\000\000\000\000\000\000\000\003\000\001-\016@\000\000\000\002\000\000\000\000\000\000\000\000\000@\000+#h\000\000\000\000 \000\000\000\000\000\000\000\000\010\000\ni\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002Z#@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001-j \000\013 \016\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002[T\000\000\026@\020\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0057+\000\000-\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nnZ\000\000Y\177`\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025]<\000\0013~`\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+;\010\000\002g|\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Vv0\000\005Ou\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001-m \000\013\037d\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002[[@\000\026?<\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\00579\000\000,~`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nnt\000\000Z\000\020\000\002Q\000\000\000\000\000Aj\000\000\000\000\000\n@\000\000\000\000\001\007(\000\000\000\000\000)p\000\000\000\000\004\035 \000\000\000\000\001)\000\000\000\000\000\002u\000\000\000\000\000\005\034\000\000\000\000\001\003T\000\000\000\000\000\024h\000\000\000\000\004\016P\000\000\000\000\000S\000\000\000\000\000\020:@\000\000\000\000\002K\000\000\000\000\000Kj\000\000\000\000\000\n(\000\000\000\000\002/(\000\000\000\000\000)\020\000\000\000\000\010= \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000V}`\000\005b\024\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001-{`\000\013D*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002[x\000\000\027\010L\036\035-g#%hl2Y\007`\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\026A\034\000\0014\011`\000\000\000\000\000\000W6\000\000\000\000\000\000\000\000\000\000\000\000\000\001\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/\"\000\000\000\010\021\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^D@\000\000\020\034\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=\n\000\000\000 P\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nz\026\000\000\000@X\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025t0\000\000\001\002p\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+\"X\000\000\002\001 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000V6@\000\000\004\004\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/# \000\000\010\002\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^G\000\000\000\030#\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=\017\000\000\0000:\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nz \000\000\000a$\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025tD\000\000\001A8\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+i\030\000\000\003\005p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WRP\000\000\006\002`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/%`\000\000\014\010@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^L@\000\000\030\005\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=\032\000\000\000P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nz8\000\000\001 \010\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025tx\000\000\002@\010\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+j\000\000\000\005\0000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WT \000\000\n\004@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/(`\000\000\024\010\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^R\000\000\000(\n\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=&\000\000\000P,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nzP\000\000\n\007(\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+jH\000\000\014\013@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000WU \000\000\030:@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002^U@\000\000`\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nz\032\000\000\000\000\014\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025Q,\000\000\000\000H\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+\033 \000\000\000\001p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WQ0\000\000\000\005 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/\" \000\000\000\r@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^D\000\000\000\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=\n\000\000\000\000N\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nz\030\000\000\000\0014\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025u0\000\000\004\000 \000\000\000\000\000\000\000\000\000\000\000\000\000 \000+jh\000\000\004\001@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WU`\000\000\010\003@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/+`\000\000`\011@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^X@\000\001@3\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=3\000\000\003\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nzj\000\000\006\003L\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025u\\\000\000\014\011\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+kH\000\000\030\0260\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WW0\000\00004`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001// \000\000`y@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^_@\000\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=@\000\000\003\001F\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n{\002\000\000\006\004\014\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025v\014\000\000\014\010\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+\032p\000\000\004\002`\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WXP\000\000\010\005`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/1@\000\000\020\014\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^c@\000\002!C\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=H\000\000\004CF\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n{\022\000\000\001\000d\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025v(\000\000\002\021P\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+lX\000\000\004\0030\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WY@\000\000\010\007\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/3 \000\0000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^g\000\000\000`\003\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=O\000\000\001@6\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n{ \000\000\003\001l\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025vD\000\000\006\004\020\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+m\020\000\000\014\0010\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WZ0\000\000\030\n`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/5\000\000\0000%@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002c0\000\000\000`[\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=U\000\000\001AV\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n{,\000\000\003\003l\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025v\\\000\000\006\rX\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000+m@\000\000\014\0370\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/6 \000\000\023\002\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^m\000\000\000&\005\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=[\000\000\000L\014\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n{8\000\000\001\030\034\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025vt\000\000\002 H\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+hh\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000@\000VE0\000\000\001\002\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001,m\000\000\000\002\007\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^E@\000\000\004\024\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=\011\000\000\000\0004\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nz\020\000\000\000\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025t(\000\000\000\"0\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+h`\000\000\000E@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000W[`\000\000\020\000@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/+\000\000\000 \002@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^o@\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=`\000\000\001\000\014\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n{B\000\000\002\000\034\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025w\010\000\000\020\004 \000\000\000\000\000\000\000\000\000\000\000\000\000 \000+n\030\000\000 \n@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000W\\@\000\0008\030@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/9 \000\000pA\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^s\000\000\000 \035\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=g\000\000\000@<\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n{P\000\000\001\000|\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025w$\000\000\002\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+nP\000\000\014\0010\000\000\000\000\000\000\000\000\000\000\000\000\000@\000W]0\000\000\030\006`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/;\000\000\0000\025@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^v@\000\000`;\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=n\000\000\001A\026\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n{^\000\000\003\002l\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025w@\000\000\006\006X\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+o\010\000\000\014\0170\000\000\000\000\000\000\000\000\000\000\000\000\000@\000W^ \000\000\030\"`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/<`\000\0000M@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^z\000\000\000a+\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=u\000\000\001Bv\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n{l\000\000\003\007,\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025w\\\000\000\006\017X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000+o@\000\000\014\010 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/> \000\0000e@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002^}\000\000\000a[\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n{v\000\000\011\000\034\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025wt\000\000\022\0018\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+ox\000\000$\004p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000W`\020\000\000H\r`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/@`\000\001\020#@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_\002@\000\002 W\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>\007\000\000\004AN\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n|\022\000\000\011\003\\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025x,\000\000\022\0108\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+ph\000\000$\022p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Wap\000\000H)`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/D \000\001\020[@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_\011@\000\002!G\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>\025\000\000\004C.\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n|.\000\000\011\007\034\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025xd\000\000\022\0178\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+qX\000\000\024\001p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WcP\000\000(\007`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/G`\000\000P\027@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_\020@\000\001 ?\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>#\000\000\002A\036\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n|J\000\000\005\002|\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025y\034\000\000\n\006x\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+rH\000\000\024\017p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000We0\000\000(#`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/K \000\000PO@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_\027@\000\001!/\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>1\000\000\002B~\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n|f\000\000\005\006<\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025yT\000\000\n\rx\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+s8\000\000\024\035p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Wg\020\000\000(?`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^F@\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0054+\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nfh\000\000\000\0004\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025t,\000\000\000\001\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+hH\000\000\000\003\020\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WQ\000\000\000\000\007`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/\"@\000\000\000\022@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^F\000\000\000\000+\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=^\000\000\001\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n{:\000\000\001\000$\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025yl\000\000\002\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+s`\000\000\004\002 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000WgP\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/O@\000\0000-\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_\037@\000\000`z\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>@\000\000\001C4\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n}\002\000\000\003\007h\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025z\010\000\000\002\001\030\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+t\030\000\000\004\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Wh@\000\000\010\005 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_\036@\000\001\000\022\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>E\000\000\000@\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n}\014\000\000\001\001<\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000+t8\000\000\004\004\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/R\000\000\000\000\030@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_$@\000\000\0002\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>J\000\000\000\000f\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n}\026\000\000\000\001P\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025z0\000\000\000\003(\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+th\000\000\000\006`\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Wi`\000\000\000\r`\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/S`\000\000\000\034\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_(\000\000\000 *\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>Q\000\000\000@V\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n}$\000\000\000\001d\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025zL\000\000\002\002`\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+u \000\000\004\005P\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WjP\000\000\010\010@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001,k@\000\000\020\021\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_+\000\000\000 #\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>W\000\000\000@H\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nzP\000\000\001\001\024\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025z`\000\000\002\0020\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+uH\000\000\004\004p\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Wk \000\000\010\n \000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/V`\000\000\020\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002_.\000\000\000`\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nz\032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025Q,\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+\033 \000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WQ0\000\000\000\004@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/\" \000\000\000\014\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^D\000\000\000\000\036\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=\n\000\000\000\000H\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nz\030\000\000\000\001(\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025vt\000\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+\033\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WkP\000\000\010\000 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\001,k`\000\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002Xf@\000\000 \003\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005=.\000\000\000@\032\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\nzZ\000\000\001\000,\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025vd\000\000\002\000 \000\000\000\000\000\000\000\000\000\000\000\000\000 \000+mP\000\000\004\000P\000\000\000\000\000\000\000\000\000\000\000\000\000@\000W[0\000\000\010\001@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/7\000\000\000\020\003@\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_\035@\000\000 \017\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005><\000\000\000@\"\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n}<\000\000\004\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025z|\000\000\010\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+v\000\000\000\020\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Wl\020\000\000 \034\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/X@\000\000@H\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_1@\000\001\0010\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>d\000\000\002\003 \000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n}J\000\000\004\007@\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025vx\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+j`\000\000\010\0000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Wl`\000\000\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/Y`\000\0000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_4\000\000\000`\030\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>i\000\000\001@P\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n}T\000\000\003\001`\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025{,\000\000\006\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+v`\000\000\014\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000WmP\000\000\030\026\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/[@\000\00000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_7@\000\000`h\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>p\000\000\001Ap\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n}b\000\000\003\004 \000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025{H\000\000\006\010P\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+w\030\000\000\014\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Wn@\000\000\030&@\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/] \000\0000T\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002_;\000\000\000a*\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005>w\000\000\001Bp\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n}p\000\000\003\005h\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025{d\000\000\006\014@\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+wP\000\000\014\031 \000\000\000\000\000\000\000\000\000\000\000\000\000@\000Wo0\000\000\0306\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001/_\000\000\0000t\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002^T\000\000\000aj\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005>}\000\000\001Cp\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000X<0\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\0010y \000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002as\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\n[<\000\0006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025MT\000\000h@\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000,40\000\001W@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Xhp\000\003 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\0011R\000\000\006@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002c%\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005FK\000\000\032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\013\r\030\000\0003p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\026\0324\000\000g`\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000,4x\000\001O@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Xj\000\000\003\036\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\0011T@\000\006:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002c*\000\000\014p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005FU\000\000\031X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\013\r.\000\0003 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\026\032d\000\000f \000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000,5P\000\001L\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Xk@\000\003\027\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001+U\000\000\005b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002c/\000\000\013D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005Ce\000\000\0320\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\013\017\022\000\0005`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\026\032|\000\000k@\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000,6\010\000\001J@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Xl \000\003\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\0011X`\000\006*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002[w@\000\014P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0057n\000\000\031\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\no`\000\0002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\026\033\024\000\000k \000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000,68\000\001G@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Xm\000\000\003\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\0011Z@\000\006\034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002c5@\000\0148\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005Fm\000\000\032`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\013\r^\000\00050\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\026\033D\000\000i \000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000,7 \000\001R\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000UXp\000\003\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001-\007@\000\006\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002c;\000\000\014,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005Fw\000\000\030P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\013\rp\000\0001\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\026\033d\000\000j@\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000,7P\000\001T@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000UU\020\000\003)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\0011^`\000\006\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002c>\000\000\014\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005F~\000\000\0308\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\013\r~\000\0000p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\026\034\004\000\000j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000,8\020\000\001T\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000XP \000\003\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\0011 `\000\006\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002bB@\000\014\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005G\004\000\000\027x\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\013\016\n\000\000/`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\025`\000\000\000_ \000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000,80\000\001>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000V2P\000\002{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001,e`\000\005v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002cD\000\000\013h\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005G\n\000\000\0328\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\013\016\030\000\000/\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\026\0348\000\000^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000+Bh\000\001;@\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000Xr\000\000\002v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\0011d@\000\005h\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002cK\000\000\013L\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\005G\032\000\000\027\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\0166\000\000. \000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\010\000\013\016H\000\000Xt`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000(\000\000\000\000\000\000\013>:\000\000[vp\000\005_Q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026&\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Laj^4$4s\033;n`\000\n\000\005@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000[}@\000\005_l\000\000-~p\000\002ow\000\000\026\177@\000\0017|\000\000\013?d\000\000[~ \000\005_t\000\000-\177 \000\002o{\000\000\026\177X\000\0017~\000\000\013?p\000\000[\177 \000\005_z\000\000-\177`\000\002o~\000\000\026\177x\000\0017\177@\000\013@\000\000\000\\\000\000\000\005`\002\000\000.\000\020\000\002p\002\000\000\027\000\020\000\0018\001@\000\013@\014\000\000\\\001\000\000\005`\010\000\000.\000P\000\002p\005\000\000\027\0000\000\0018\003\000\000\013@\034\000\000\\\001`\000\005`\020\000\000.\001\000\000\002p\011\000\000\027\000H\000\0018\005\000\000\013@(\000\000\\\002`\000\005`\026\000\000.\001@\000\002p\014\000\000\027\000h\000\0018\006@\000\013@8\000\000\\\003@\000\005`\036\000\000.\001p\000\002p\020\000\000\027\001\000\000\0018\010@\000\013@D\000\000\\\004@\000\005`$\000\000.\0020\000\002p\023\000\000\027\001 \000\0018\n\000\000\013@T\000\000\\\005 \000\005`,\000\000.\002`\000\002p\027\000\000\027\0018\000\0018\014\000\000\013@`\000\000\\\006 \000\005`2\000\000.\003 \000\002p\032\000\000\027\001X\000\0018\r@\000\013@p\000\000\\\007\000\000\005`:\000\000.\003P\000\002p\036\000\000\027\001p\000\0018\017@\000\013@|\000\000\\\010\000\000\005`@\000\000.\004\020\000\002p!\000\000\027\002\020\000\0018\021\000\000\013A\014\000\000\\\010`\000\005`H\000\000.\004@\000\002p%\000\000\027\002(\000\0018\023\000\000\013A\030\000\000\\\011`\000\005`N\000\000.\005\000\000\002p(\000\000\027\002H\000\0018\024@\000\013A(\000\000\\\n@\000\005`V\000\000.\0050\000\002p,\000\000\027\002`\000\0018\026@\000\013A4\000\000\\\013@\000\005`\\\000\000.\005p\000\002p/\000\000\027\003\000\000\0018\030\000\000\013AD\000\000\\\014 \000\005`d\000\000.\006 \000\002p3\000\000\027\003\030\000\0018\032\000\000\013AP\000\000\\\r \000\005`j\000\000.\006`\000\002p6\000\000\027\0038\000\0018\033@\000\013A`\000\000\\\016\000\000\005`r\000\000.\007\020\000\002p:\000\000\027\003P\000\0018\035@\000\013Al\000\000\\\017\000\000\005`x\000\000.\007P\000\002p=\000\000\027\003p\000\0018\037\000\000\013A|\000\000\\\017`\000\005a\000\000\000.\010\000\000\002pA\000\000\027\004\010\000\0018!\000\000\013B\010\000\000\\\020`\000\005a\006\000\000.\010@\000\002pD\000\000\027\004(\000\0018\"@\000\013B\030\000\000\\\021@\000\005a\016\000\000.\010p\000\002pH\000\000\027\004@\000\0018$@\000\013B$\000\000\\\022@\000\005a\024\000\000.\0110\000\002pK\000\000\027\004`\000\0018&\000\000\013B4\000\000\\\023 \000\005a\034\000\000.\011`\000\002pO\000\000\027\004x\000\0018(\000\000\013B@\000\000\\\024 \000\005a\"\000\000.\n \000\002pR\000\000\027\005\030\000\0018)@\000\013BP\000\000\\\025\000\000\005a*\000\000.\nP\000\002pV\000\000\027\0050\000\0018+@\000\013B\\\000\000\\\026\000\000\005a0\000\000.\013\020\000\002pY\000\000\027\005P\000\0018-\000\000\013Bl\000\000\\\026`\000\005a8\000\000.\013@\000\002p]\000\000\027\005h\000\0018/\000\000\013Bx\000\000\\\027`\000\005a>\000\000.\014\000\000\002p`\000\000\027\006\010\000\00180@\000\013C\010\000\000\\\030@\000\005aF\000\000.\0140\000\002pd\000\000\027\006 \000\00182@\000\013C\024\000\000\\\031@\000\005aL\000\000.\014p\000\002pg\000\000\027\006@\000\00184\000\000\013C$\000\000\\\032 \000\005aT\000\000.\r \000\002pk\000\000\027\006X\000\00186\000\000\013C0\000\000\\\033 \000\005aZ\000\000.\r`\000\002pn\000\000\027\006x\000\00187@\000\013C@\000\000\\\034\000\000\005ab\000\000.\016\020\000\002pr\000\000\027\007\020\000\00189@\000\013CL\000\000\\\035\000\000\005ah\000\000.\016P\000\002pu\004\nM\006I$@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001.X \000\nP\014\000\000U\000`\000\005(\006\000\000*@0\000\002T\003\000\000\025 \030\000\001*\001@\000\nP\014\000\000U\000a~\177?_ow{}~\177?_ow{|\000\000", + 0xac6); + private static final int[] _data5 = decodeData( + "\000\000\000\004\000\000\000\000 \035l \000\001n\000\000\000\000\000\000\000\020\000\000\000\001\003\177@\000\000\000\000\000\000\002\000H\000\000\000\000\000\000\002\177p\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000:`\000\000\003Z\000\000\000\035@\000\000\001j\000\000\000.8p\000\002h\025\007\023\010\000\000\000\000\000\000'\177\177\177\177\177\177\177\177|\000\005]Z\000\000\000\000\000?|H?5\"\020Z\030_~$\037ZQ\010-\014\037F~!r\020\000:g\007\177\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\001\177p\000\000\000\000\000\000\002\177p\000\000\000\000\000\000\000?H+'.\031\0134\021\037j/4Y\021l\ruOv\020k\032AP\036T'{:\027\033E&\010\rc~\011\022$I\000\020?y\177*U*U*U(6\177\"Z\021\005FS0^?VwEU\026{{\032\037lv\017\025=i\0326OwG\016\033|#\013\034'|Lf3\031L:xC\177@\000\000\000\000\000\000\001\177`\000\000\000\000\000\000\000\177p\000\000\000\000\000\000\001\177x\000\000\000\000\000\000\000#{\177\177\177\000\000\000\000\017|\000\000\000\000\000\000\000\030~\177\177\177`\000\000\000\007\177@\000\000\000\000\000\000\002\000\022!}U\010Bh`\177y\020~jD!40?\001\017<\020own\011\037R=~\003T\0032D\017tH\021\"jhGNg|N\005*\016D\021\nS~S,\022\001zmwi\177\nU*U*U*T\1773\\16\022tJ\004?s\001MA\\4\002Y \000\005.,q3\nd\020\0003Q\0349\n\026Rg\177\000\000\000\000\000\000\000\003dFL&\031E\013@9\177@\000\000\000\000\000\000\000\177y\020~jD!40\017K./\032\024+N:gl8wFWX\177OSy(\003 \014p,\035)~\002\021\010D\"\017E\030\177E*U*U*U\022?p\000\000\000\000\000\000\000\037|\000\000\000\000\000\000\000/~\000\000\000\000\000\000\000\007~I\007vT\"\013#\003d\006L&\031E\013@={fuevl\005\033L~\024?\"\024\003>>9) { - case 0x80: run_10000(); break; - case 0x81: run_10200(); break; - case 0x82: run_10400(); break; - case 0x83: run_10600(); break; - case 0x84: run_10800(); break; - case 0x85: run_10a00(); break; - case 0x86: run_10c00(); break; - case 0x87: run_10e00(); break; - case 0x88: run_11000(); break; - case 0x89: run_11200(); break; - case 0x8a: run_11400(); break; - case 0x8b: run_11600(); break; - case 0x8c: run_11800(); break; - case 0x8d: run_11a00(); break; - case 0x8e: run_11c00(); break; - case 0x8f: run_11e00(); break; - case 0x90: run_12000(); break; - case 0x91: run_12200(); break; - case 0x92: run_12400(); break; - case 0x93: run_12600(); break; - case 0x94: run_12800(); break; - case 0x95: run_12a00(); break; - case 0x96: run_12c00(); break; - case 0x97: run_12e00(); break; - case 0x98: run_13000(); break; - case 0x99: run_13200(); break; - case 0x9a: run_13400(); break; - case 0x9b: run_13600(); break; - case 0x9c: run_13800(); break; - case 0x9d: run_13a00(); break; - case 0x9e: run_13c00(); break; - case 0x9f: run_13e00(); break; - case 0xa0: run_14000(); break; - case 0xa1: run_14200(); break; - case 0xa2: run_14400(); break; - case 0xa3: run_14600(); break; - case 0xa4: run_14800(); break; - case 0xa5: run_14a00(); break; - case 0xa6: run_14c00(); break; - case 0xa7: run_14e00(); break; - case 0xa8: run_15000(); break; - case 0xa9: run_15200(); break; - case 0xaa: run_15400(); break; - case 0xab: run_15600(); break; - case 0xac: run_15800(); break; - case 0xad: run_15a00(); break; - case 0xae: run_15c00(); break; - case 0xaf: run_15e00(); break; - case 0xb0: run_16000(); break; - case 0xb1: run_16200(); break; - case 0xb2: run_16400(); break; - case 0xb3: run_16600(); break; - case 0xb4: run_16800(); break; - case 0xb5: run_16a00(); break; - case 0xb6: run_16c00(); break; - case 0xb7: run_16e00(); break; - case 0xb8: run_17000(); break; - case 0xb9: run_17200(); break; - case 0xba: run_17400(); break; - case 0xbb: run_17600(); break; - case 0xbc: run_17800(); break; - case 0xbd: run_17a00(); break; - case 0xbe: run_17c00(); break; - case 0xbf: run_17e00(); break; - case 0xc0: run_18000(); break; - case 0xc1: run_18200(); break; - case 0xc2: run_18400(); break; - case 0xc3: run_18600(); break; - case 0xc4: run_18800(); break; - case 0xc5: run_18a00(); break; - case 0xc6: run_18c00(); break; - case 0xc7: run_18e00(); break; - case 0xc8: run_19000(); break; - case 0xc9: run_19200(); break; - case 0xca: run_19400(); break; - case 0xcb: run_19600(); break; - case 0xcc: run_19800(); break; - case 0xcd: run_19a00(); break; - case 0xce: run_19c00(); break; - case 0xcf: run_19e00(); break; - case 0xd0: run_1a000(); break; - case 0xd1: run_1a200(); break; - case 0xd2: run_1a400(); break; - case 0xd3: run_1a600(); break; - case 0xd4: run_1a800(); break; - case 0xd5: run_1aa00(); break; - case 0xd6: run_1ac00(); break; - case 0xd7: run_1ae00(); break; - case 0xd8: run_1b000(); break; - case 0xd9: run_1b200(); break; - case 0xda: run_1b400(); break; - case 0xdb: run_1b600(); break; - case 0xdc: run_1b800(); break; - case 0xdd: run_1ba00(); break; - case 0xde: run_1bc00(); break; - case 0xdf: run_1be00(); break; - case 0xe0: run_1c000(); break; - case 0xe1: run_1c200(); break; - case 0xe2: run_1c400(); break; - case 0xe3: run_1c600(); break; - case 0xe4: run_1c800(); break; - case 0xe5: run_1ca00(); break; - case 0xe6: run_1cc00(); break; - case 0xe7: run_1ce00(); break; - case 0xe8: run_1d000(); break; - case 0xe9: run_1d200(); break; - case 0xea: run_1d400(); break; - case 0xeb: run_1d600(); break; - case 0xec: run_1d800(); break; - case 0xed: run_1da00(); break; - case 0xee: run_1dc00(); break; - case 0xef: run_1de00(); break; - case 0xf0: run_1e000(); break; - case 0xf1: run_1e200(); break; - case 0xf2: run_1e400(); break; - case 0xf3: run_1e600(); break; - case 0xf4: run_1e800(); break; - case 0xf5: run_1ea00(); break; - case 0xf6: run_1ec00(); break; - case 0xf7: run_1ee00(); break; - case 0xf8: run_1f000(); break; - case 0xf9: run_1f200(); break; - case 0xfa: run_1f400(); break; - case 0xfb: run_1f600(); break; - case 0xfc: run_1f800(); break; - case 0xfd: run_1fa00(); break; - case 0xfe: run_1fc00(); break; - case 0xff: run_1fe00(); break; - case 0x100: run_20000(); break; - case 0x101: run_20200(); break; - case 0x102: run_20400(); break; - case 0x103: run_20600(); break; - case 0x104: run_20800(); break; - case 0x105: run_20a00(); break; - case 0x106: run_20c00(); break; - case 0x107: run_20e00(); break; - case 0x108: run_21000(); break; - case 0x109: run_21200(); break; - case 0x10a: run_21400(); break; - case 0x10b: run_21600(); break; - case 0x10c: run_21800(); break; - case 0x10d: run_21a00(); break; - case 0x10e: run_21c00(); break; - case 0x10f: run_21e00(); break; - case 0x110: run_22000(); break; - case 0x111: run_22200(); break; - case 0x112: run_22400(); break; - case 0x113: run_22600(); break; - case 0x114: run_22800(); break; - case 0x115: run_22a00(); break; - case 0x116: run_22c00(); break; - case 0x117: run_22e00(); break; - case 0x118: run_23000(); break; - case 0x119: run_23200(); break; - case 0x11a: run_23400(); break; - case 0x11b: run_23600(); break; - case 0x11c: run_23800(); break; - case 0x11d: run_23a00(); break; - case 0x11e: run_23c00(); break; - case 0x11f: run_23e00(); break; - case 0x120: run_24000(); break; - case 0x121: run_24200(); break; - case 0x122: run_24400(); break; - case 0x123: run_24600(); break; - case 0x124: run_24800(); break; - case 0x125: run_24a00(); break; - case 0x126: run_24c00(); break; - case 0x127: run_24e00(); break; - case 0x128: run_25000(); break; - case 0x129: run_25200(); break; - case 0x12a: run_25400(); break; - case 0x12b: run_25600(); break; - case 0x12c: run_25800(); break; - case 0x12d: run_25a00(); break; - case 0x12e: run_25c00(); break; - case 0x12f: run_25e00(); break; - case 0x130: run_26000(); break; - case 0x131: run_26200(); break; - case 0x132: run_26400(); break; - case 0x133: run_26600(); break; - case 0x134: run_26800(); break; - case 0x135: run_26a00(); break; - case 0x136: run_26c00(); break; - case 0x137: run_26e00(); break; - case 0x138: run_27000(); break; - case 0x139: run_27200(); break; - case 0x13a: run_27400(); break; - case 0x13b: run_27600(); break; - case 0x13c: run_27800(); break; - case 0x13d: run_27a00(); break; - case 0x13e: run_27c00(); break; - case 0x13f: run_27e00(); break; - case 0x140: run_28000(); break; - case 0x141: run_28200(); break; - case 0x142: run_28400(); break; - case 0x143: run_28600(); break; - case 0x144: run_28800(); break; - case 0x145: run_28a00(); break; - case 0x146: run_28c00(); break; - case 0x147: run_28e00(); break; - case 0x148: run_29000(); break; - case 0x149: run_29200(); break; - case 0x14a: run_29400(); break; - case 0x14b: run_29600(); break; - case 0x14c: run_29800(); break; - case 0x14d: run_29a00(); break; - case 0x14e: run_29c00(); break; - case 0x14f: run_29e00(); break; - case 0x150: run_2a000(); break; - case 0x151: run_2a200(); break; - case 0x152: run_2a400(); break; - case 0x153: run_2a600(); break; - case 0x154: run_2a800(); break; - case 0x155: run_2aa00(); break; - case 0x156: run_2ac00(); break; - case 0x157: run_2ae00(); break; - case 0x158: run_2b000(); break; - case 0x159: run_2b200(); break; - case 0x15a: run_2b400(); break; - case 0x15b: run_2b600(); break; - case 0x15c: run_2b800(); break; - case 0x15d: run_2ba00(); break; - case 0x15e: run_2bc00(); break; - case 0x15f: run_2be00(); break; - case 0x160: run_2c000(); break; - case 0x161: run_2c200(); break; - case 0x162: run_2c400(); break; - case 0x163: run_2c600(); break; - case 0x164: run_2c800(); break; - case 0x165: run_2ca00(); break; - case 0x166: run_2cc00(); break; - case 0x167: run_2ce00(); break; - case 0x168: run_2d000(); break; - case 0x169: run_2d200(); break; - case 0x16a: run_2d400(); break; - case 0x16b: run_2d600(); break; - case 0x16c: run_2d800(); break; - case 0x16d: run_2da00(); break; - case 0x16e: run_2dc00(); break; - case 0x16f: run_2de00(); break; - case 0x170: run_2e000(); break; - case 0x171: run_2e200(); break; - case 0x172: run_2e400(); break; - case 0x173: run_2e600(); break; - case 0x174: run_2e800(); break; - case 0x175: run_2ea00(); break; - case 0x176: run_2ec00(); break; - case 0x177: run_2ee00(); break; - case 0x178: run_2f000(); break; - case 0x179: run_2f200(); break; - case 0x17a: run_2f400(); break; - case 0x17b: run_2f600(); break; - case 0x17c: run_2f800(); break; - case 0x17d: run_2fa00(); break; - case 0x17e: run_2fc00(); break; - case 0x17f: run_2fe00(); break; - case 0x180: run_30000(); break; - case 0x181: run_30200(); break; - case 0x182: run_30400(); break; - case 0x183: run_30600(); break; - case 0x184: run_30800(); break; - case 0x185: run_30a00(); break; - case 0x186: run_30c00(); break; - case 0x187: run_30e00(); break; - case 0x188: run_31000(); break; - case 0x189: run_31200(); break; - case 0x18a: run_31400(); break; - case 0x18b: run_31600(); break; - case 0x18c: run_31800(); break; - case 0x18d: run_31a00(); break; - case 0x18e: run_31c00(); break; - case 0x18f: run_31e00(); break; - case 0x190: run_32000(); break; - case 0x191: run_32200(); break; - case 0x192: run_32400(); break; - case 0x193: run_32600(); break; - case 0x194: run_32800(); break; - case 0x195: run_32a00(); break; - case 0x196: run_32c00(); break; - case 0x197: run_32e00(); break; - case 0x198: run_33000(); break; - case 0x199: run_33200(); break; - case 0x19a: run_33400(); break; - case 0x19b: run_33600(); break; - case 0x19c: run_33800(); break; - case 0x19d: run_33a00(); break; - case 0x19e: run_33c00(); break; - case 0x19f: run_33e00(); break; - case 0x1a0: run_34000(); break; - case 0x1a1: run_34200(); break; - case 0x1a2: run_34400(); break; - case 0x1a3: run_34600(); break; - case 0x1a4: run_34800(); break; - case 0x1a5: run_34a00(); break; - case 0x1a6: run_34c00(); break; - case 0x1a7: run_34e00(); break; - case 0x1a8: run_35000(); break; - case 0x1a9: run_35200(); break; - case 0x1aa: run_35400(); break; - case 0x1ab: run_35600(); break; - case 0x1ac: run_35800(); break; - case 0x1ad: run_35a00(); break; - case 0x1ae: run_35c00(); break; - case 0x1af: run_35e00(); break; - case 0x1b0: run_36000(); break; - case 0x1b1: run_36200(); break; - case 0x1b2: run_36400(); break; - case 0x1b3: run_36600(); break; - case 0x1b4: run_36800(); break; - case 0x1b5: run_36a00(); break; - case 0x1b6: run_36c00(); break; - case 0x1b7: run_36e00(); break; - case 0x1b8: run_37000(); break; - case 0x1b9: run_37200(); break; - case 0x1ba: run_37400(); break; - case 0x1bb: run_37600(); break; - case 0x1bc: run_37800(); break; - case 0x1bd: run_37a00(); break; - case 0x1be: run_37c00(); break; - case 0x1bf: run_37e00(); break; - case 0x1c0: run_38000(); break; - case 0x1c1: run_38200(); break; - case 0x1c2: run_38400(); break; - case 0x1c3: run_38600(); break; - case 0x1c4: run_38800(); break; - case 0x1c5: run_38a00(); break; - case 0x1c6: run_38c00(); break; - case 0x1c7: run_38e00(); break; - case 0x1c8: run_39000(); break; - case 0x1c9: run_39200(); break; - case 0x1ca: run_39400(); break; - case 0x1cb: run_39600(); break; - case 0x1cc: run_39800(); break; - case 0x1cd: run_39a00(); break; - case 0x1ce: run_39c00(); break; - case 0x1cf: run_39e00(); break; - case 0x1d0: run_3a000(); break; - case 0x1d1: run_3a200(); break; - case 0x1d2: run_3a400(); break; - case 0x1d3: run_3a600(); break; - case 0x1d4: run_3a800(); break; - case 0x1d5: run_3aa00(); break; - case 0x1d6: run_3ac00(); break; - case 0x1d7: run_3ae00(); break; - case 0x1d8: run_3b000(); break; - case 0x1d9: run_3b200(); break; - case 0x1da: run_3b400(); break; - case 0x1db: run_3b600(); break; - case 0x1dc: run_3b800(); break; - case 0x1dd: run_3ba00(); break; - case 0x1de: run_3bc00(); break; - case 0x1df: run_3be00(); break; - case 0x1e0: run_3c000(); break; - case 0x1e1: run_3c200(); break; - case 0x1e2: run_3c400(); break; - case 0x1e3: run_3c600(); break; - case 0x1e4: run_3c800(); break; - case 0x1e5: run_3ca00(); break; - case 0x1e6: run_3cc00(); break; - case 0x1e7: run_3ce00(); break; - case 0x1e8: run_3d000(); break; - case 0x1e9: run_3d200(); break; - case 0x1ea: run_3d400(); break; - case 0x1eb: run_3d600(); break; - case 0x1ec: run_3d800(); break; - case 0x1ed: run_3da00(); break; - case 0x1ee: run_3dc00(); break; - case 0x1ef: run_3de00(); break; - case 0x1f0: run_3e000(); break; - case 0x1f1: run_3e200(); break; - case 0x1f2: run_3e400(); break; - case 0x1f3: run_3e600(); break; - case 0x1f4: run_3e800(); break; - case 0x1f5: run_3ea00(); break; - case 0x1f6: run_3ec00(); break; - case 0x1f7: run_3ee00(); break; - case 0x1f8: run_3f000(); break; - case 0x1f9: run_3f200(); break; - case 0x1fa: run_3f400(); break; - case 0x1fb: run_3f600(); break; - case 0x1fc: run_3f800(); break; - case 0x1fd: run_3fa00(); break; - case 0x1fe: run_3fc00(); break; - case 0x1ff: run_3fe00(); break; - case 0x200: run_40000(); break; - case 0x201: run_40200(); break; - case 0x202: run_40400(); break; - case 0x203: run_40600(); break; - case 0x204: run_40800(); break; - case 0x205: run_40a00(); break; - case 0x206: run_40c00(); break; - case 0x207: run_40e00(); break; - case 0x208: run_41000(); break; - case 0x209: run_41200(); break; - case 0x20a: run_41400(); break; - case 0x20b: run_41600(); break; - case 0x20c: run_41800(); break; - case 0x20d: run_41a00(); break; - case 0x20e: run_41c00(); break; - case 0x20f: run_41e00(); break; - case 0x210: run_42000(); break; - case 0x211: run_42200(); break; - case 0x212: run_42400(); break; - case 0x213: run_42600(); break; - case 0x214: run_42800(); break; - case 0x215: run_42a00(); break; - case 0x216: run_42c00(); break; - case 0x217: run_42e00(); break; - case 0x218: run_43000(); break; - case 0x219: run_43200(); break; - case 0x21a: run_43400(); break; - case 0x21b: run_43600(); break; - case 0x21c: run_43800(); break; - case 0x21d: run_43a00(); break; - case 0x21e: run_43c00(); break; - case 0x21f: run_43e00(); break; - case 0x220: run_44000(); break; - case 0x221: run_44200(); break; - case 0x222: run_44400(); break; - case 0x223: run_44600(); break; - case 0x224: run_44800(); break; - case 0x225: run_44a00(); break; - case 0x226: run_44c00(); break; - case 0x227: run_44e00(); break; - case 0x228: run_45000(); break; - case 0x229: run_45200(); break; - case 0x22a: run_45400(); break; - case 0x22b: run_45600(); break; - case 0x22c: run_45800(); break; - case 0x22d: run_45a00(); break; - case 0x22e: run_45c00(); break; - case 0x22f: run_45e00(); break; - case 0x230: run_46000(); break; - case 0x231: run_46200(); break; - case 0x232: run_46400(); break; - case 0x233: run_46600(); break; - case 0x234: run_46800(); break; - case 0x235: run_46a00(); break; - case 0x236: run_46c00(); break; - case 0x237: run_46e00(); break; - case 0x238: run_47000(); break; - case 0x239: run_47200(); break; - case 0x23a: run_47400(); break; - case 0x23b: run_47600(); break; - case 0x23c: run_47800(); break; - case 0x23d: run_47a00(); break; - case 0x23e: run_47c00(); break; - case 0x23f: run_47e00(); break; - case 0x240: run_48000(); break; - case 0x241: run_48200(); break; - case 0x242: run_48400(); break; - case 0x243: run_48600(); break; - case 0x244: run_48800(); break; - case 0x245: run_48a00(); break; - case 0x246: run_48c00(); break; - case 0x247: run_48e00(); break; - case 0x248: run_49000(); break; - case 0x249: run_49200(); break; - case 0x24a: run_49400(); break; - case 0x24b: run_49600(); break; - case 0x24c: run_49800(); break; - case 0x24d: run_49a00(); break; - case 0x24e: run_49c00(); break; - case 0x24f: run_49e00(); break; - case 0x250: run_4a000(); break; - case 0x251: run_4a200(); break; - case 0x252: run_4a400(); break; - case 0x253: run_4a600(); break; - case 0x254: run_4a800(); break; - case 0x255: run_4aa00(); break; - case 0x256: run_4ac00(); break; - case 0x257: run_4ae00(); break; - case 0x258: run_4b000(); break; - case 0x259: run_4b200(); break; - case 0x25a: run_4b400(); break; - case 0x25b: run_4b600(); break; - case 0x25c: run_4b800(); break; - case 0x25d: run_4ba00(); break; - case 0x25e: run_4bc00(); break; - case 0x25f: run_4be00(); break; - case 0x260: run_4c000(); break; - case 0x261: run_4c200(); break; - case 0x262: run_4c400(); break; - case 0x263: run_4c600(); break; - case 0x264: run_4c800(); break; - case 0x265: run_4ca00(); break; - case 0x266: run_4cc00(); break; - case 0x267: run_4ce00(); break; - case 0x268: run_4d000(); break; - case 0x269: run_4d200(); break; - case 0x26a: run_4d400(); break; - case 0x26b: run_4d600(); break; - case 0x26c: run_4d800(); break; - case 0x26d: run_4da00(); break; - case 0x26e: run_4dc00(); break; - case 0x26f: run_4de00(); break; - case 0x270: run_4e000(); break; - case 0x271: run_4e200(); break; - case 0x272: run_4e400(); break; - case 0x273: run_4e600(); break; - case 0x274: run_4e800(); break; - case 0x275: run_4ea00(); break; - case 0x276: run_4ec00(); break; - case 0x277: run_4ee00(); break; - case 0x278: run_4f000(); break; - case 0x279: run_4f200(); break; - case 0x27a: run_4f400(); break; - case 0x27b: run_4f600(); break; - case 0x27c: run_4f800(); break; - case 0x27d: run_4fa00(); break; - case 0x27e: run_4fc00(); break; - case 0x27f: run_4fe00(); break; - case 0x280: run_50000(); break; - case 0x281: run_50200(); break; - case 0x282: run_50400(); break; - case 0x283: run_50600(); break; - case 0x284: run_50800(); break; - case 0x285: run_50a00(); break; - case 0x286: run_50c00(); break; - case 0x287: run_50e00(); break; - case 0x288: run_51000(); break; - case 0x289: run_51200(); break; - case 0x28a: run_51400(); break; - case 0x28b: run_51600(); break; - case 0x28c: run_51800(); break; - case 0x28d: run_51a00(); break; - case 0x28e: run_51c00(); break; - case 0x28f: run_51e00(); break; - case 0x290: run_52000(); break; - case 0x291: run_52200(); break; - case 0x292: run_52400(); break; - case 0x293: run_52600(); break; - case 0x294: run_52800(); break; - case 0x295: run_52a00(); break; - case 0x296: run_52c00(); break; - case 0x297: run_52e00(); break; - case 0x298: run_53000(); break; - case 0x299: run_53200(); break; - case 0x29a: run_53400(); break; - case 0x29b: run_53600(); break; - case 0x29c: run_53800(); break; - case 0x29d: run_53a00(); break; - case 0x29e: run_53c00(); break; - case 0x29f: run_53e00(); break; - case 0x2a0: run_54000(); break; - case 0x2a1: run_54200(); break; - case 0x2a2: run_54400(); break; - case 0x2a3: run_54600(); break; - case 0x2a4: run_54800(); break; - case 0x2a5: run_54a00(); break; - case 0x2a6: run_54c00(); break; - case 0x2a7: run_54e00(); break; - case 0x2a8: run_55000(); break; - case 0x2a9: run_55200(); break; - case 0x2aa: run_55400(); break; - case 0x2ab: run_55600(); break; - case 0x2ac: run_55800(); break; - case 0x2ad: run_55a00(); break; - case 0x2ae: run_55c00(); break; - case 0x2af: run_55e00(); break; - case 0x2b0: run_56000(); break; - case 0x2b1: run_56200(); break; - case 0x2b2: run_56400(); break; - case 0x2b3: run_56600(); break; - case 0x2b4: run_56800(); break; - case 0x2b5: run_56a00(); break; - case 0x2b6: run_56c00(); break; - case 0x2b7: run_56e00(); break; - case 0x2b8: run_57000(); break; - case 0x2b9: run_57200(); break; - case 0x2ba: run_57400(); break; - case 0x2bb: run_57600(); break; - case 0x2bc: run_57800(); break; - case 0x2bd: run_57a00(); break; - case 0x2be: run_57c00(); break; - case 0x2bf: run_57e00(); break; - case 0x2c0: run_58000(); break; - case 0x2c1: run_58200(); break; - case 0x2c2: run_58400(); break; - case 0x2c3: run_58600(); break; - case 0x2c4: run_58800(); break; - case 0x2c5: run_58a00(); break; - case 0x2c6: run_58c00(); break; - case 0x2c7: run_58e00(); break; - case 0x2c8: run_59000(); break; - case 0x2c9: run_59200(); break; - case 0x2ca: run_59400(); break; - case 0x2cb: run_59600(); break; - case 0x2cc: run_59800(); break; - case 0x2cd: run_59a00(); break; - case 0x2ce: run_59c00(); break; - case 0x2cf: run_59e00(); break; - case 0x2d0: run_5a000(); break; - case 0x2d1: run_5a200(); break; - case 0x2d2: run_5a400(); break; - case 0x2d3: run_5a600(); break; - case 0x2d4: run_5a800(); break; - case 0x2d5: run_5aa00(); break; - case 0x2d6: run_5ac00(); break; - case 0x2d7: run_5ae00(); break; - case 0x2d8: run_5b000(); break; - case 0x2d9: run_5b200(); break; - case 0x2da: run_5b400(); break; - case 0x2db: run_5b600(); break; - case 0x2dc: run_5b800(); break; - case 0x2dd: run_5ba00(); break; - case 0x2de: run_5bc00(); break; - case 0x2df: run_5be00(); break; - case 0x2e0: run_5c000(); break; - case 0x2e1: run_5c200(); break; - case 0x2e2: run_5c400(); break; - case 0x2e3: run_5c600(); break; - case 0x2e4: run_5c800(); break; - case 0x2e5: run_5ca00(); break; - case 0x2e6: run_5cc00(); break; - case 0x2e7: run_5ce00(); break; - case 0x2e8: run_5d000(); break; - case 0x2e9: run_5d200(); break; - case 0x2ea: run_5d400(); break; - case 0x2eb: run_5d600(); break; - case 0x2ec: run_5d800(); break; - case 0x2ed: run_5da00(); break; - case 0x2ee: run_5dc00(); break; - case 0x2ef: run_5de00(); break; - case 0x2f0: run_5e000(); break; - case 0x2f1: run_5e200(); break; - case 0x2f2: run_5e400(); break; - case 0x2f3: run_5e600(); break; - case 0x2f4: run_5e800(); break; - case 0x2f5: run_5ea00(); break; - case 0x2f6: run_5ec00(); break; - case 0x2f7: run_5ee00(); break; - case 0x2f8: run_5f000(); break; - case 0x2f9: run_5f200(); break; - case 0x2fa: run_5f400(); break; - case 0x2fb: run_5f600(); break; - case 0x2fc: run_5f800(); break; - case 0x2fd: run_5fa00(); break; - case 0x2fe: run_5fc00(); break; - case 0x2ff: run_5fe00(); break; - case 0x300: run_60000(); break; - case 0x301: run_60200(); break; - case 0x302: run_60400(); break; - case 0x303: run_60600(); break; - case 0x304: run_60800(); break; - case 0x305: run_60a00(); break; - case 0x306: run_60c00(); break; - case 0x307: run_60e00(); break; - case 0x308: run_61000(); break; - case 0x309: run_61200(); break; - case 0x30a: run_61400(); break; - case 0x30b: run_61600(); break; - case 0x30c: run_61800(); break; - case 0x30d: run_61a00(); break; - case 0x30e: run_61c00(); break; - case 0x30f: run_61e00(); break; - case 0x310: run_62000(); break; - case 0x311: run_62200(); break; - case 0x312: run_62400(); break; - case 0x313: run_62600(); break; - case 0x314: run_62800(); break; - case 0x315: run_62a00(); break; - case 0x316: run_62c00(); break; - case 0x317: run_62e00(); break; - case 0x318: run_63000(); break; - case 0x319: run_63200(); break; - case 0x31a: run_63400(); break; - case 0x31b: run_63600(); break; - case 0x31c: run_63800(); break; - case 0x31d: run_63a00(); break; - case 0x31e: run_63c00(); break; - case 0x31f: run_63e00(); break; - case 0x320: run_64000(); break; - case 0x321: run_64200(); break; - case 0x322: run_64400(); break; - case 0x323: run_64600(); break; - case 0x324: run_64800(); break; - case 0x325: run_64a00(); break; - case 0x326: run_64c00(); break; - case 0x327: run_64e00(); break; - case 0x328: run_65000(); break; - case 0x329: run_65200(); break; - case 0x32a: run_65400(); break; - case 0x32b: run_65600(); break; - case 0x32c: run_65800(); break; - case 0x32d: run_65a00(); break; - case 0x32e: run_65c00(); break; - case 0x32f: run_65e00(); break; - case 0x330: run_66000(); break; - case 0x331: run_66200(); break; - case 0x332: run_66400(); break; - case 0x333: run_66600(); break; - case 0x334: run_66800(); break; - case 0x335: run_66a00(); break; - case 0x336: run_66c00(); break; - case 0x337: run_66e00(); break; - case 0x338: run_67000(); break; - case 0x339: run_67200(); break; - case 0x33a: run_67400(); break; - case 0x33b: run_67600(); break; - case 0x33c: run_67800(); break; - case 0x33d: run_67a00(); break; - case 0x33e: run_67c00(); break; - case 0x33f: run_67e00(); break; - case 0x340: run_68000(); break; - case 0x341: run_68200(); break; - case 0x342: run_68400(); break; - case 0x343: run_68600(); break; - case 0x344: run_68800(); break; - case 0x345: run_68a00(); break; - case 0x346: run_68c00(); break; - case 0x347: run_68e00(); break; - case 0x348: run_69000(); break; - case 0x349: run_69200(); break; - case 0x34a: run_69400(); break; - case 0x34b: run_69600(); break; - case 0x34c: run_69800(); break; - case 0x34d: run_69a00(); break; - case 0x34e: run_69c00(); break; - case 0x34f: run_69e00(); break; - case 0x350: run_6a000(); break; - case 0x351: run_6a200(); break; - case 0x352: run_6a400(); break; - case 0x353: run_6a600(); break; - case 0x354: run_6a800(); break; - case 0x355: run_6aa00(); break; - case 0x356: run_6ac00(); break; - case 0x357: run_6ae00(); break; - case 0x358: run_6b000(); break; - case 0x359: run_6b200(); break; - case 0x35a: run_6b400(); break; - case 0x35b: run_6b600(); break; - case 0x35c: run_6b800(); break; - case 0x35d: run_6ba00(); break; - case 0x35e: run_6bc00(); break; - case 0x35f: run_6be00(); break; - case 0x360: run_6c000(); break; - case 0x361: run_6c200(); break; - case 0x362: run_6c400(); break; - default: throw new ExecutionException("invalid address 0x" + Long.toString(this.pc&0xffffffffL,16) + ": r2: " + r2); + while (state == RUNNING) { + switch (pc >>> 9) { + case 0x80: + run_10000(); + break; + case 0x81: + run_10200(); + break; + case 0x82: + run_10400(); + break; + case 0x83: + run_10600(); + break; + case 0x84: + run_10800(); + break; + case 0x85: + run_10a00(); + break; + case 0x86: + run_10c00(); + break; + case 0x87: + run_10e00(); + break; + case 0x88: + run_11000(); + break; + case 0x89: + run_11200(); + break; + case 0x8a: + run_11400(); + break; + case 0x8b: + run_11600(); + break; + case 0x8c: + run_11800(); + break; + case 0x8d: + run_11a00(); + break; + case 0x8e: + run_11c00(); + break; + case 0x8f: + run_11e00(); + break; + case 0x90: + run_12000(); + break; + case 0x91: + run_12200(); + break; + case 0x92: + run_12400(); + break; + case 0x93: + run_12600(); + break; + case 0x94: + run_12800(); + break; + case 0x95: + run_12a00(); + break; + case 0x96: + run_12c00(); + break; + case 0x97: + run_12e00(); + break; + case 0x98: + run_13000(); + break; + case 0x99: + run_13200(); + break; + case 0x9a: + run_13400(); + break; + case 0x9b: + run_13600(); + break; + case 0x9c: + run_13800(); + break; + case 0x9d: + run_13a00(); + break; + case 0x9e: + run_13c00(); + break; + case 0x9f: + run_13e00(); + break; + case 0xa0: + run_14000(); + break; + case 0xa1: + run_14200(); + break; + case 0xa2: + run_14400(); + break; + case 0xa3: + run_14600(); + break; + case 0xa4: + run_14800(); + break; + case 0xa5: + run_14a00(); + break; + case 0xa6: + run_14c00(); + break; + case 0xa7: + run_14e00(); + break; + case 0xa8: + run_15000(); + break; + case 0xa9: + run_15200(); + break; + case 0xaa: + run_15400(); + break; + case 0xab: + run_15600(); + break; + case 0xac: + run_15800(); + break; + case 0xad: + run_15a00(); + break; + case 0xae: + run_15c00(); + break; + case 0xaf: + run_15e00(); + break; + case 0xb0: + run_16000(); + break; + case 0xb1: + run_16200(); + break; + case 0xb2: + run_16400(); + break; + case 0xb3: + run_16600(); + break; + case 0xb4: + run_16800(); + break; + case 0xb5: + run_16a00(); + break; + case 0xb6: + run_16c00(); + break; + case 0xb7: + run_16e00(); + break; + case 0xb8: + run_17000(); + break; + case 0xb9: + run_17200(); + break; + case 0xba: + run_17400(); + break; + case 0xbb: + run_17600(); + break; + case 0xbc: + run_17800(); + break; + case 0xbd: + run_17a00(); + break; + case 0xbe: + run_17c00(); + break; + case 0xbf: + run_17e00(); + break; + case 0xc0: + run_18000(); + break; + case 0xc1: + run_18200(); + break; + case 0xc2: + run_18400(); + break; + case 0xc3: + run_18600(); + break; + case 0xc4: + run_18800(); + break; + case 0xc5: + run_18a00(); + break; + case 0xc6: + run_18c00(); + break; + case 0xc7: + run_18e00(); + break; + case 0xc8: + run_19000(); + break; + case 0xc9: + run_19200(); + break; + case 0xca: + run_19400(); + break; + case 0xcb: + run_19600(); + break; + case 0xcc: + run_19800(); + break; + case 0xcd: + run_19a00(); + break; + case 0xce: + run_19c00(); + break; + case 0xcf: + run_19e00(); + break; + case 0xd0: + run_1a000(); + break; + case 0xd1: + run_1a200(); + break; + case 0xd2: + run_1a400(); + break; + case 0xd3: + run_1a600(); + break; + case 0xd4: + run_1a800(); + break; + case 0xd5: + run_1aa00(); + break; + case 0xd6: + run_1ac00(); + break; + case 0xd7: + run_1ae00(); + break; + case 0xd8: + run_1b000(); + break; + case 0xd9: + run_1b200(); + break; + case 0xda: + run_1b400(); + break; + case 0xdb: + run_1b600(); + break; + case 0xdc: + run_1b800(); + break; + case 0xdd: + run_1ba00(); + break; + case 0xde: + run_1bc00(); + break; + case 0xdf: + run_1be00(); + break; + case 0xe0: + run_1c000(); + break; + case 0xe1: + run_1c200(); + break; + case 0xe2: + run_1c400(); + break; + case 0xe3: + run_1c600(); + break; + case 0xe4: + run_1c800(); + break; + case 0xe5: + run_1ca00(); + break; + case 0xe6: + run_1cc00(); + break; + case 0xe7: + run_1ce00(); + break; + case 0xe8: + run_1d000(); + break; + case 0xe9: + run_1d200(); + break; + case 0xea: + run_1d400(); + break; + case 0xeb: + run_1d600(); + break; + case 0xec: + run_1d800(); + break; + case 0xed: + run_1da00(); + break; + case 0xee: + run_1dc00(); + break; + case 0xef: + run_1de00(); + break; + case 0xf0: + run_1e000(); + break; + case 0xf1: + run_1e200(); + break; + case 0xf2: + run_1e400(); + break; + case 0xf3: + run_1e600(); + break; + case 0xf4: + run_1e800(); + break; + case 0xf5: + run_1ea00(); + break; + case 0xf6: + run_1ec00(); + break; + case 0xf7: + run_1ee00(); + break; + case 0xf8: + run_1f000(); + break; + case 0xf9: + run_1f200(); + break; + case 0xfa: + run_1f400(); + break; + case 0xfb: + run_1f600(); + break; + case 0xfc: + run_1f800(); + break; + case 0xfd: + run_1fa00(); + break; + case 0xfe: + run_1fc00(); + break; + case 0xff: + run_1fe00(); + break; + case 0x100: + run_20000(); + break; + case 0x101: + run_20200(); + break; + case 0x102: + run_20400(); + break; + case 0x103: + run_20600(); + break; + case 0x104: + run_20800(); + break; + case 0x105: + run_20a00(); + break; + case 0x106: + run_20c00(); + break; + case 0x107: + run_20e00(); + break; + case 0x108: + run_21000(); + break; + case 0x109: + run_21200(); + break; + case 0x10a: + run_21400(); + break; + case 0x10b: + run_21600(); + break; + case 0x10c: + run_21800(); + break; + case 0x10d: + run_21a00(); + break; + case 0x10e: + run_21c00(); + break; + case 0x10f: + run_21e00(); + break; + case 0x110: + run_22000(); + break; + case 0x111: + run_22200(); + break; + case 0x112: + run_22400(); + break; + case 0x113: + run_22600(); + break; + case 0x114: + run_22800(); + break; + case 0x115: + run_22a00(); + break; + case 0x116: + run_22c00(); + break; + case 0x117: + run_22e00(); + break; + case 0x118: + run_23000(); + break; + case 0x119: + run_23200(); + break; + case 0x11a: + run_23400(); + break; + case 0x11b: + run_23600(); + break; + case 0x11c: + run_23800(); + break; + case 0x11d: + run_23a00(); + break; + case 0x11e: + run_23c00(); + break; + case 0x11f: + run_23e00(); + break; + case 0x120: + run_24000(); + break; + case 0x121: + run_24200(); + break; + case 0x122: + run_24400(); + break; + case 0x123: + run_24600(); + break; + case 0x124: + run_24800(); + break; + case 0x125: + run_24a00(); + break; + case 0x126: + run_24c00(); + break; + case 0x127: + run_24e00(); + break; + case 0x128: + run_25000(); + break; + case 0x129: + run_25200(); + break; + case 0x12a: + run_25400(); + break; + case 0x12b: + run_25600(); + break; + case 0x12c: + run_25800(); + break; + case 0x12d: + run_25a00(); + break; + case 0x12e: + run_25c00(); + break; + case 0x12f: + run_25e00(); + break; + case 0x130: + run_26000(); + break; + case 0x131: + run_26200(); + break; + case 0x132: + run_26400(); + break; + case 0x133: + run_26600(); + break; + case 0x134: + run_26800(); + break; + case 0x135: + run_26a00(); + break; + case 0x136: + run_26c00(); + break; + case 0x137: + run_26e00(); + break; + case 0x138: + run_27000(); + break; + case 0x139: + run_27200(); + break; + case 0x13a: + run_27400(); + break; + case 0x13b: + run_27600(); + break; + case 0x13c: + run_27800(); + break; + case 0x13d: + run_27a00(); + break; + case 0x13e: + run_27c00(); + break; + case 0x13f: + run_27e00(); + break; + case 0x140: + run_28000(); + break; + case 0x141: + run_28200(); + break; + case 0x142: + run_28400(); + break; + case 0x143: + run_28600(); + break; + case 0x144: + run_28800(); + break; + case 0x145: + run_28a00(); + break; + case 0x146: + run_28c00(); + break; + case 0x147: + run_28e00(); + break; + case 0x148: + run_29000(); + break; + case 0x149: + run_29200(); + break; + case 0x14a: + run_29400(); + break; + case 0x14b: + run_29600(); + break; + case 0x14c: + run_29800(); + break; + case 0x14d: + run_29a00(); + break; + case 0x14e: + run_29c00(); + break; + case 0x14f: + run_29e00(); + break; + case 0x150: + run_2a000(); + break; + case 0x151: + run_2a200(); + break; + case 0x152: + run_2a400(); + break; + case 0x153: + run_2a600(); + break; + case 0x154: + run_2a800(); + break; + case 0x155: + run_2aa00(); + break; + case 0x156: + run_2ac00(); + break; + case 0x157: + run_2ae00(); + break; + case 0x158: + run_2b000(); + break; + case 0x159: + run_2b200(); + break; + case 0x15a: + run_2b400(); + break; + case 0x15b: + run_2b600(); + break; + case 0x15c: + run_2b800(); + break; + case 0x15d: + run_2ba00(); + break; + case 0x15e: + run_2bc00(); + break; + case 0x15f: + run_2be00(); + break; + case 0x160: + run_2c000(); + break; + case 0x161: + run_2c200(); + break; + case 0x162: + run_2c400(); + break; + case 0x163: + run_2c600(); + break; + case 0x164: + run_2c800(); + break; + case 0x165: + run_2ca00(); + break; + case 0x166: + run_2cc00(); + break; + case 0x167: + run_2ce00(); + break; + case 0x168: + run_2d000(); + break; + case 0x169: + run_2d200(); + break; + case 0x16a: + run_2d400(); + break; + case 0x16b: + run_2d600(); + break; + case 0x16c: + run_2d800(); + break; + case 0x16d: + run_2da00(); + break; + case 0x16e: + run_2dc00(); + break; + case 0x16f: + run_2de00(); + break; + case 0x170: + run_2e000(); + break; + case 0x171: + run_2e200(); + break; + case 0x172: + run_2e400(); + break; + case 0x173: + run_2e600(); + break; + case 0x174: + run_2e800(); + break; + case 0x175: + run_2ea00(); + break; + case 0x176: + run_2ec00(); + break; + case 0x177: + run_2ee00(); + break; + case 0x178: + run_2f000(); + break; + case 0x179: + run_2f200(); + break; + case 0x17a: + run_2f400(); + break; + case 0x17b: + run_2f600(); + break; + case 0x17c: + run_2f800(); + break; + case 0x17d: + run_2fa00(); + break; + case 0x17e: + run_2fc00(); + break; + case 0x17f: + run_2fe00(); + break; + case 0x180: + run_30000(); + break; + case 0x181: + run_30200(); + break; + case 0x182: + run_30400(); + break; + case 0x183: + run_30600(); + break; + case 0x184: + run_30800(); + break; + case 0x185: + run_30a00(); + break; + case 0x186: + run_30c00(); + break; + case 0x187: + run_30e00(); + break; + case 0x188: + run_31000(); + break; + case 0x189: + run_31200(); + break; + case 0x18a: + run_31400(); + break; + case 0x18b: + run_31600(); + break; + case 0x18c: + run_31800(); + break; + case 0x18d: + run_31a00(); + break; + case 0x18e: + run_31c00(); + break; + case 0x18f: + run_31e00(); + break; + case 0x190: + run_32000(); + break; + case 0x191: + run_32200(); + break; + case 0x192: + run_32400(); + break; + case 0x193: + run_32600(); + break; + case 0x194: + run_32800(); + break; + case 0x195: + run_32a00(); + break; + case 0x196: + run_32c00(); + break; + case 0x197: + run_32e00(); + break; + case 0x198: + run_33000(); + break; + case 0x199: + run_33200(); + break; + case 0x19a: + run_33400(); + break; + case 0x19b: + run_33600(); + break; + case 0x19c: + run_33800(); + break; + case 0x19d: + run_33a00(); + break; + case 0x19e: + run_33c00(); + break; + case 0x19f: + run_33e00(); + break; + case 0x1a0: + run_34000(); + break; + case 0x1a1: + run_34200(); + break; + case 0x1a2: + run_34400(); + break; + case 0x1a3: + run_34600(); + break; + case 0x1a4: + run_34800(); + break; + case 0x1a5: + run_34a00(); + break; + case 0x1a6: + run_34c00(); + break; + case 0x1a7: + run_34e00(); + break; + case 0x1a8: + run_35000(); + break; + case 0x1a9: + run_35200(); + break; + case 0x1aa: + run_35400(); + break; + case 0x1ab: + run_35600(); + break; + case 0x1ac: + run_35800(); + break; + case 0x1ad: + run_35a00(); + break; + case 0x1ae: + run_35c00(); + break; + case 0x1af: + run_35e00(); + break; + case 0x1b0: + run_36000(); + break; + case 0x1b1: + run_36200(); + break; + case 0x1b2: + run_36400(); + break; + case 0x1b3: + run_36600(); + break; + case 0x1b4: + run_36800(); + break; + case 0x1b5: + run_36a00(); + break; + case 0x1b6: + run_36c00(); + break; + case 0x1b7: + run_36e00(); + break; + case 0x1b8: + run_37000(); + break; + case 0x1b9: + run_37200(); + break; + case 0x1ba: + run_37400(); + break; + case 0x1bb: + run_37600(); + break; + case 0x1bc: + run_37800(); + break; + case 0x1bd: + run_37a00(); + break; + case 0x1be: + run_37c00(); + break; + case 0x1bf: + run_37e00(); + break; + case 0x1c0: + run_38000(); + break; + case 0x1c1: + run_38200(); + break; + case 0x1c2: + run_38400(); + break; + case 0x1c3: + run_38600(); + break; + case 0x1c4: + run_38800(); + break; + case 0x1c5: + run_38a00(); + break; + case 0x1c6: + run_38c00(); + break; + case 0x1c7: + run_38e00(); + break; + case 0x1c8: + run_39000(); + break; + case 0x1c9: + run_39200(); + break; + case 0x1ca: + run_39400(); + break; + case 0x1cb: + run_39600(); + break; + case 0x1cc: + run_39800(); + break; + case 0x1cd: + run_39a00(); + break; + case 0x1ce: + run_39c00(); + break; + case 0x1cf: + run_39e00(); + break; + case 0x1d0: + run_3a000(); + break; + case 0x1d1: + run_3a200(); + break; + case 0x1d2: + run_3a400(); + break; + case 0x1d3: + run_3a600(); + break; + case 0x1d4: + run_3a800(); + break; + case 0x1d5: + run_3aa00(); + break; + case 0x1d6: + run_3ac00(); + break; + case 0x1d7: + run_3ae00(); + break; + case 0x1d8: + run_3b000(); + break; + case 0x1d9: + run_3b200(); + break; + case 0x1da: + run_3b400(); + break; + case 0x1db: + run_3b600(); + break; + case 0x1dc: + run_3b800(); + break; + case 0x1dd: + run_3ba00(); + break; + case 0x1de: + run_3bc00(); + break; + case 0x1df: + run_3be00(); + break; + case 0x1e0: + run_3c000(); + break; + case 0x1e1: + run_3c200(); + break; + case 0x1e2: + run_3c400(); + break; + case 0x1e3: + run_3c600(); + break; + case 0x1e4: + run_3c800(); + break; + case 0x1e5: + run_3ca00(); + break; + case 0x1e6: + run_3cc00(); + break; + case 0x1e7: + run_3ce00(); + break; + case 0x1e8: + run_3d000(); + break; + case 0x1e9: + run_3d200(); + break; + case 0x1ea: + run_3d400(); + break; + case 0x1eb: + run_3d600(); + break; + case 0x1ec: + run_3d800(); + break; + case 0x1ed: + run_3da00(); + break; + case 0x1ee: + run_3dc00(); + break; + case 0x1ef: + run_3de00(); + break; + case 0x1f0: + run_3e000(); + break; + case 0x1f1: + run_3e200(); + break; + case 0x1f2: + run_3e400(); + break; + case 0x1f3: + run_3e600(); + break; + case 0x1f4: + run_3e800(); + break; + case 0x1f5: + run_3ea00(); + break; + case 0x1f6: + run_3ec00(); + break; + case 0x1f7: + run_3ee00(); + break; + case 0x1f8: + run_3f000(); + break; + case 0x1f9: + run_3f200(); + break; + case 0x1fa: + run_3f400(); + break; + case 0x1fb: + run_3f600(); + break; + case 0x1fc: + run_3f800(); + break; + case 0x1fd: + run_3fa00(); + break; + case 0x1fe: + run_3fc00(); + break; + case 0x1ff: + run_3fe00(); + break; + case 0x200: + run_40000(); + break; + case 0x201: + run_40200(); + break; + case 0x202: + run_40400(); + break; + case 0x203: + run_40600(); + break; + case 0x204: + run_40800(); + break; + case 0x205: + run_40a00(); + break; + case 0x206: + run_40c00(); + break; + case 0x207: + run_40e00(); + break; + case 0x208: + run_41000(); + break; + case 0x209: + run_41200(); + break; + case 0x20a: + run_41400(); + break; + case 0x20b: + run_41600(); + break; + case 0x20c: + run_41800(); + break; + case 0x20d: + run_41a00(); + break; + case 0x20e: + run_41c00(); + break; + case 0x20f: + run_41e00(); + break; + case 0x210: + run_42000(); + break; + case 0x211: + run_42200(); + break; + case 0x212: + run_42400(); + break; + case 0x213: + run_42600(); + break; + case 0x214: + run_42800(); + break; + case 0x215: + run_42a00(); + break; + case 0x216: + run_42c00(); + break; + case 0x217: + run_42e00(); + break; + case 0x218: + run_43000(); + break; + case 0x219: + run_43200(); + break; + case 0x21a: + run_43400(); + break; + case 0x21b: + run_43600(); + break; + case 0x21c: + run_43800(); + break; + case 0x21d: + run_43a00(); + break; + case 0x21e: + run_43c00(); + break; + case 0x21f: + run_43e00(); + break; + case 0x220: + run_44000(); + break; + case 0x221: + run_44200(); + break; + case 0x222: + run_44400(); + break; + case 0x223: + run_44600(); + break; + case 0x224: + run_44800(); + break; + case 0x225: + run_44a00(); + break; + case 0x226: + run_44c00(); + break; + case 0x227: + run_44e00(); + break; + case 0x228: + run_45000(); + break; + case 0x229: + run_45200(); + break; + case 0x22a: + run_45400(); + break; + case 0x22b: + run_45600(); + break; + case 0x22c: + run_45800(); + break; + case 0x22d: + run_45a00(); + break; + case 0x22e: + run_45c00(); + break; + case 0x22f: + run_45e00(); + break; + case 0x230: + run_46000(); + break; + case 0x231: + run_46200(); + break; + case 0x232: + run_46400(); + break; + case 0x233: + run_46600(); + break; + case 0x234: + run_46800(); + break; + case 0x235: + run_46a00(); + break; + case 0x236: + run_46c00(); + break; + case 0x237: + run_46e00(); + break; + case 0x238: + run_47000(); + break; + case 0x239: + run_47200(); + break; + case 0x23a: + run_47400(); + break; + case 0x23b: + run_47600(); + break; + case 0x23c: + run_47800(); + break; + case 0x23d: + run_47a00(); + break; + case 0x23e: + run_47c00(); + break; + case 0x23f: + run_47e00(); + break; + case 0x240: + run_48000(); + break; + case 0x241: + run_48200(); + break; + case 0x242: + run_48400(); + break; + case 0x243: + run_48600(); + break; + case 0x244: + run_48800(); + break; + case 0x245: + run_48a00(); + break; + case 0x246: + run_48c00(); + break; + case 0x247: + run_48e00(); + break; + case 0x248: + run_49000(); + break; + case 0x249: + run_49200(); + break; + case 0x24a: + run_49400(); + break; + case 0x24b: + run_49600(); + break; + case 0x24c: + run_49800(); + break; + case 0x24d: + run_49a00(); + break; + case 0x24e: + run_49c00(); + break; + case 0x24f: + run_49e00(); + break; + case 0x250: + run_4a000(); + break; + case 0x251: + run_4a200(); + break; + case 0x252: + run_4a400(); + break; + case 0x253: + run_4a600(); + break; + case 0x254: + run_4a800(); + break; + case 0x255: + run_4aa00(); + break; + case 0x256: + run_4ac00(); + break; + case 0x257: + run_4ae00(); + break; + case 0x258: + run_4b000(); + break; + case 0x259: + run_4b200(); + break; + case 0x25a: + run_4b400(); + break; + case 0x25b: + run_4b600(); + break; + case 0x25c: + run_4b800(); + break; + case 0x25d: + run_4ba00(); + break; + case 0x25e: + run_4bc00(); + break; + case 0x25f: + run_4be00(); + break; + case 0x260: + run_4c000(); + break; + case 0x261: + run_4c200(); + break; + case 0x262: + run_4c400(); + break; + case 0x263: + run_4c600(); + break; + case 0x264: + run_4c800(); + break; + case 0x265: + run_4ca00(); + break; + case 0x266: + run_4cc00(); + break; + case 0x267: + run_4ce00(); + break; + case 0x268: + run_4d000(); + break; + case 0x269: + run_4d200(); + break; + case 0x26a: + run_4d400(); + break; + case 0x26b: + run_4d600(); + break; + case 0x26c: + run_4d800(); + break; + case 0x26d: + run_4da00(); + break; + case 0x26e: + run_4dc00(); + break; + case 0x26f: + run_4de00(); + break; + case 0x270: + run_4e000(); + break; + case 0x271: + run_4e200(); + break; + case 0x272: + run_4e400(); + break; + case 0x273: + run_4e600(); + break; + case 0x274: + run_4e800(); + break; + case 0x275: + run_4ea00(); + break; + case 0x276: + run_4ec00(); + break; + case 0x277: + run_4ee00(); + break; + case 0x278: + run_4f000(); + break; + case 0x279: + run_4f200(); + break; + case 0x27a: + run_4f400(); + break; + case 0x27b: + run_4f600(); + break; + case 0x27c: + run_4f800(); + break; + case 0x27d: + run_4fa00(); + break; + case 0x27e: + run_4fc00(); + break; + case 0x27f: + run_4fe00(); + break; + case 0x280: + run_50000(); + break; + case 0x281: + run_50200(); + break; + case 0x282: + run_50400(); + break; + case 0x283: + run_50600(); + break; + case 0x284: + run_50800(); + break; + case 0x285: + run_50a00(); + break; + case 0x286: + run_50c00(); + break; + case 0x287: + run_50e00(); + break; + case 0x288: + run_51000(); + break; + case 0x289: + run_51200(); + break; + case 0x28a: + run_51400(); + break; + case 0x28b: + run_51600(); + break; + case 0x28c: + run_51800(); + break; + case 0x28d: + run_51a00(); + break; + case 0x28e: + run_51c00(); + break; + case 0x28f: + run_51e00(); + break; + case 0x290: + run_52000(); + break; + case 0x291: + run_52200(); + break; + case 0x292: + run_52400(); + break; + case 0x293: + run_52600(); + break; + case 0x294: + run_52800(); + break; + case 0x295: + run_52a00(); + break; + case 0x296: + run_52c00(); + break; + case 0x297: + run_52e00(); + break; + case 0x298: + run_53000(); + break; + case 0x299: + run_53200(); + break; + case 0x29a: + run_53400(); + break; + case 0x29b: + run_53600(); + break; + case 0x29c: + run_53800(); + break; + case 0x29d: + run_53a00(); + break; + case 0x29e: + run_53c00(); + break; + case 0x29f: + run_53e00(); + break; + case 0x2a0: + run_54000(); + break; + case 0x2a1: + run_54200(); + break; + case 0x2a2: + run_54400(); + break; + case 0x2a3: + run_54600(); + break; + default: + throw new ExecutionException( + "invalid address 0x" + Long.toString(this.pc & 0xffffffffL, 16) + ": r2: " + r2); } } } public AcmeCrossAssembler() { - super(4096,65536); - initPages(_data1,0x6c600,false); - initPages(_data2,0x6c608,false); - initPages(_data3,0x6d000,true); - initPages(_data4,0x71548,false); - initPages(_data5,0x73010,false); - clearPages(0x7378c,0x48); - clearPages(0x738b0,0x1012); + super(4096, 65536); + initPages(_data1, 0x54800, false); + initPages(_data2, 0x54808, false); + initPages(_data3, 0x55000, true); + initPages(_data4, 0x598f8, false); + initPages(_data5, 0x5c410, false); + clearPages(0x5c960, 0x26); + clearPages(0x5c9f8, 0x392); + } + + protected int entryPoint() { + return 0x10400; + } + + protected int heapStart() { + return 0x5d840; + } + + protected int gp() { + return 0x64410; } - protected int entryPoint() { return 0x10400; } - protected int heapStart() { return 0x778f8; } - protected int gp() { return 0x7b010; } public static void main(String[] args) throws Exception { AcmeCrossAssembler me = new AcmeCrossAssembler(); - int status = me.run("Acme",args); + int status = me.run("jace.assembly.AcmeCrossAssembler", args); System.exit(status); } - protected void _execute() throws ExecutionException { trampoline(); } + protected void _execute() throws ExecutionException { + trampoline(); + } protected void setCPUState(CPUState state) { - r1=state.r[1]; - r2=state.r[2]; - r3=state.r[3]; - r4=state.r[4]; - r5=state.r[5]; - r6=state.r[6]; - r7=state.r[7]; - r8=state.r[8]; - r9=state.r[9]; - r10=state.r[10]; - r11=state.r[11]; - r12=state.r[12]; - r13=state.r[13]; - r14=state.r[14]; - r15=state.r[15]; - r16=state.r[16]; - r17=state.r[17]; - r18=state.r[18]; - r19=state.r[19]; - r20=state.r[20]; - r21=state.r[21]; - r22=state.r[22]; - r23=state.r[23]; - r24=state.r[24]; - r25=state.r[25]; - r26=state.r[26]; - r27=state.r[27]; - r28=state.r[28]; - r29=state.r[29]; - r30=state.r[30]; - r31=state.r[31]; - f0=state.f[0]; - f1=state.f[1]; - f2=state.f[2]; - f3=state.f[3]; - f4=state.f[4]; - f5=state.f[5]; - f6=state.f[6]; - f7=state.f[7]; - f8=state.f[8]; - f9=state.f[9]; - f10=state.f[10]; - f11=state.f[11]; - f12=state.f[12]; - f13=state.f[13]; - f14=state.f[14]; - f15=state.f[15]; - f16=state.f[16]; - f17=state.f[17]; - f18=state.f[18]; - f19=state.f[19]; - f20=state.f[20]; - f21=state.f[21]; - f22=state.f[22]; - f23=state.f[23]; - f24=state.f[24]; - f25=state.f[25]; - f26=state.f[26]; - f27=state.f[27]; - f28=state.f[28]; - f29=state.f[29]; - f30=state.f[30]; - f31=state.f[31]; - hi=state.hi; lo=state.lo; fcsr=state.fcsr; - pc=state.pc; + r1 = state.r[1]; + r2 = state.r[2]; + r3 = state.r[3]; + r4 = state.r[4]; + r5 = state.r[5]; + r6 = state.r[6]; + r7 = state.r[7]; + r8 = state.r[8]; + r9 = state.r[9]; + r10 = state.r[10]; + r11 = state.r[11]; + r12 = state.r[12]; + r13 = state.r[13]; + r14 = state.r[14]; + r15 = state.r[15]; + r16 = state.r[16]; + r17 = state.r[17]; + r18 = state.r[18]; + r19 = state.r[19]; + r20 = state.r[20]; + r21 = state.r[21]; + r22 = state.r[22]; + r23 = state.r[23]; + r24 = state.r[24]; + r25 = state.r[25]; + r26 = state.r[26]; + r27 = state.r[27]; + r28 = state.r[28]; + r29 = state.r[29]; + r30 = state.r[30]; + r31 = state.r[31]; + f0 = state.f[0]; + f1 = state.f[1]; + f2 = state.f[2]; + f3 = state.f[3]; + f4 = state.f[4]; + f5 = state.f[5]; + f6 = state.f[6]; + f7 = state.f[7]; + f8 = state.f[8]; + f9 = state.f[9]; + f10 = state.f[10]; + f11 = state.f[11]; + f12 = state.f[12]; + f13 = state.f[13]; + f14 = state.f[14]; + f15 = state.f[15]; + f16 = state.f[16]; + f17 = state.f[17]; + f18 = state.f[18]; + f19 = state.f[19]; + f20 = state.f[20]; + f21 = state.f[21]; + f22 = state.f[22]; + f23 = state.f[23]; + f24 = state.f[24]; + f25 = state.f[25]; + f26 = state.f[26]; + f27 = state.f[27]; + f28 = state.f[28]; + f29 = state.f[29]; + f30 = state.f[30]; + f31 = state.f[31]; + hi = state.hi; + lo = state.lo; + fcsr = state.fcsr; + pc = state.pc; } + protected void getCPUState(CPUState state) { - state.r[1]=r1; - state.r[2]=r2; - state.r[3]=r3; - state.r[4]=r4; - state.r[5]=r5; - state.r[6]=r6; - state.r[7]=r7; - state.r[8]=r8; - state.r[9]=r9; - state.r[10]=r10; - state.r[11]=r11; - state.r[12]=r12; - state.r[13]=r13; - state.r[14]=r14; - state.r[15]=r15; - state.r[16]=r16; - state.r[17]=r17; - state.r[18]=r18; - state.r[19]=r19; - state.r[20]=r20; - state.r[21]=r21; - state.r[22]=r22; - state.r[23]=r23; - state.r[24]=r24; - state.r[25]=r25; - state.r[26]=r26; - state.r[27]=r27; - state.r[28]=r28; - state.r[29]=r29; - state.r[30]=r30; - state.r[31]=r31; - state.f[0]=f0; - state.f[1]=f1; - state.f[2]=f2; - state.f[3]=f3; - state.f[4]=f4; - state.f[5]=f5; - state.f[6]=f6; - state.f[7]=f7; - state.f[8]=f8; - state.f[9]=f9; - state.f[10]=f10; - state.f[11]=f11; - state.f[12]=f12; - state.f[13]=f13; - state.f[14]=f14; - state.f[15]=f15; - state.f[16]=f16; - state.f[17]=f17; - state.f[18]=f18; - state.f[19]=f19; - state.f[20]=f20; - state.f[21]=f21; - state.f[22]=f22; - state.f[23]=f23; - state.f[24]=f24; - state.f[25]=f25; - state.f[26]=f26; - state.f[27]=f27; - state.f[28]=f28; - state.f[29]=f29; - state.f[30]=f30; - state.f[31]=f31; - state.hi=hi; state.lo=lo; state.fcsr=fcsr; - state.pc=pc; + state.r[1] = r1; + state.r[2] = r2; + state.r[3] = r3; + state.r[4] = r4; + state.r[5] = r5; + state.r[6] = r6; + state.r[7] = r7; + state.r[8] = r8; + state.r[9] = r9; + state.r[10] = r10; + state.r[11] = r11; + state.r[12] = r12; + state.r[13] = r13; + state.r[14] = r14; + state.r[15] = r15; + state.r[16] = r16; + state.r[17] = r17; + state.r[18] = r18; + state.r[19] = r19; + state.r[20] = r20; + state.r[21] = r21; + state.r[22] = r22; + state.r[23] = r23; + state.r[24] = r24; + state.r[25] = r25; + state.r[26] = r26; + state.r[27] = r27; + state.r[28] = r28; + state.r[29] = r29; + state.r[30] = r30; + state.r[31] = r31; + state.f[0] = f0; + state.f[1] = f1; + state.f[2] = f2; + state.f[3] = f3; + state.f[4] = f4; + state.f[5] = f5; + state.f[6] = f6; + state.f[7] = f7; + state.f[8] = f8; + state.f[9] = f9; + state.f[10] = f10; + state.f[11] = f11; + state.f[12] = f12; + state.f[13] = f13; + state.f[14] = f14; + state.f[15] = f15; + state.f[16] = f16; + state.f[17] = f17; + state.f[18] = f18; + state.f[19] = f19; + state.f[20] = f20; + state.f[21] = f21; + state.f[22] = f22; + state.f[23] = f23; + state.f[24] = f24; + state.f[25] = f25; + state.f[26] = f26; + state.f[27] = f27; + state.f[28] = f28; + state.f[29] = f29; + state.f[30] = f30; + state.f[31] = f31; + state.hi = hi; + state.lo = lo; + state.fcsr = fcsr; + state.pc = pc; } private static final java.util.Hashtable symbols = new java.util.Hashtable(); static { - symbols.put("setgrent",Integer.valueOf(0x53c00)); - symbols.put("chroot",Integer.valueOf(0x4cc00)); - symbols.put("strcpy",Integer.valueOf(0x42e00)); - symbols.put("cliargs_get_rest",Integer.valueOf(0x16e00)); - symbols.put("flow_store_doloop_condition",Integer.valueOf(0x19600)); - symbols.put("fabs",Integer.valueOf(0x32a00)); - symbols.put("waitpid",Integer.valueOf(0x4ae00)); - symbols.put("vcpu_set_pc",Integer.valueOf(0x27e00)); - symbols.put("flow_parse_block_else_block",Integer.valueOf(0x19a00)); - symbols.put("Output_passinit",Integer.valueOf(0x27600)); - symbols.put("Input_until_terminator",Integer.valueOf(0x1d800)); - symbols.put("GetQuotedByte",Integer.valueOf(0x1c600)); - symbols.put("getgid",Integer.valueOf(0x496c4)); - symbols.put("sysconf",Integer.valueOf(0x4a400)); - symbols.put("printf",Integer.valueOf(0x3fc00)); - symbols.put("vsprintf",Integer.valueOf(0x65200)); - symbols.put("utime",Integer.valueOf(0x4a800)); - symbols.put("Input_skip_or_store_block",Integer.valueOf(0x1d400)); - symbols.put("getlogin",Integer.valueOf(0x54e00)); - symbols.put("recv",Integer.valueOf(0x4fe00)); - symbols.put("Input_skip_remainder",Integer.valueOf(0x1c800)); - symbols.put("connect",Integer.valueOf(0x4e200)); - symbols.put("ungetc",Integer.valueOf(0x6a800)); - symbols.put("GetByte",Integer.valueOf(0x1c000)); - symbols.put("safe_malloc",Integer.valueOf(0x1b400)); - symbols.put("geteuid",Integer.valueOf(0x496b4)); - symbols.put("symbol_fix_forward_anon_name",Integer.valueOf(0x30800)); - symbols.put("memmove",Integer.valueOf(0x5b600)); - symbols.put("keyword_is_65816mnemo",Integer.valueOf(0x24e00)); - symbols.put("snprintf",Integer.valueOf(0x41c00)); - symbols.put("pathconf",Integer.valueOf(0x4c800)); - symbols.put("Tree_easy_scan",Integer.valueOf(0x31000)); - symbols.put("mknod",Integer.valueOf(0x4ce00)); - symbols.put("getgrgid",Integer.valueOf(0x53800)); - symbols.put("dump_tree",Integer.valueOf(0x31400)); - symbols.put("getenv",Integer.valueOf(0x3e000)); - symbols.put("fchmod",Integer.valueOf(0x4c000)); - symbols.put("floor",Integer.valueOf(0x37600)); - symbols.put("getegid",Integer.valueOf(0x496d4)); - symbols.put("setpriority",Integer.valueOf(0x4e000)); - symbols.put("getpriority",Integer.valueOf(0x4de00)); - symbols.put("usleep",Integer.valueOf(0x4d200)); - symbols.put("typesystem_want_imm",Integer.valueOf(0x32000)); - symbols.put("getpagesize",Integer.valueOf(0x48b80)); - symbols.put("fchown",Integer.valueOf(0x4ba00)); - symbols.put("fgets",Integer.valueOf(0x59400)); - symbols.put("dirname",Integer.valueOf(0x55000)); - symbols.put("Section_finalize",Integer.valueOf(0x2e600)); - symbols.put("Throw_warning",Integer.valueOf(0x1ac00)); - symbols.put("memcpy",Integer.valueOf(0x48fdc)); - symbols.put("DynaBuf_to_lower",Integer.valueOf(0x18000)); - symbols.put("Throw_error",Integer.valueOf(0x1b000)); - symbols.put("ALU_any_result",Integer.valueOf(0x16400)); - symbols.put("readlink",Integer.valueOf(0x4b600)); - symbols.put("puts",Integer.valueOf(0x40400)); - symbols.put("dup2",Integer.valueOf(0x4ac00)); - symbols.put("mbrtowc",Integer.valueOf(0x66200)); - symbols.put("getpass",Integer.valueOf(0x54a00)); - symbols.put("getuid",Integer.valueOf(0x496a4)); - symbols.put("malloc",Integer.valueOf(0x3e800)); - symbols.put("isatty",Integer.valueOf(0x5a200)); - symbols.put("symbol_define",Integer.valueOf(0x30200)); - symbols.put("iswspace",Integer.valueOf(0x65e00)); - symbols.put("endpwent",Integer.valueOf(0x54800)); - symbols.put("sleep",Integer.valueOf(0x48af0)); - symbols.put("vsnprintf",Integer.valueOf(0x64e00)); - symbols.put("recvfrom",Integer.valueOf(0x4f800)); - symbols.put("strtoul",Integer.valueOf(0x5fc00)); - symbols.put("ACME_finalize",Integer.valueOf(0x11800)); - symbols.put("typesystem_force_address_statement",Integer.valueOf(0x31e00)); - symbols.put("gethostbyaddr",Integer.valueOf(0x53200)); - symbols.put("rmdir",Integer.valueOf(0x4a200)); - symbols.put("Input_append_keyword_to_global_dynabuf",Integer.valueOf(0x1dc00)); - symbols.put("socket",Integer.valueOf(0x4e400)); - symbols.put("select",Integer.valueOf(0x4fa00)); - symbols.put("readdir",Integer.valueOf(0x52600)); - symbols.put("lchown",Integer.valueOf(0x4bc00)); - symbols.put("setgroups",Integer.valueOf(0x50e00)); - symbols.put("fflush",Integer.valueOf(0x39a00)); - symbols.put("cliargs_safe_get_next",Integer.valueOf(0x16a00)); - symbols.put("ftruncate",Integer.valueOf(0x4d000)); - symbols.put("realpath",Integer.valueOf(0x4d800)); - symbols.put("keyword_is_6510mnemo",Integer.valueOf(0x23000)); - symbols.put("chown",Integer.valueOf(0x4b800)); - symbols.put("send",Integer.valueOf(0x4fc00)); - symbols.put("vcpu_check_and_set_reg_length",Integer.valueOf(0x17200)); - symbols.put("Output_init",Integer.valueOf(0x26e00)); - symbols.put("chmod",Integer.valueOf(0x4be00)); - symbols.put("alarm",Integer.valueOf(0x49a64)); - symbols.put("Parse_optional_block",Integer.valueOf(0x1b600)); - symbols.put("strtol",Integer.valueOf(0x43600)); - symbols.put("pipe",Integer.valueOf(0x4aa00)); - symbols.put("encoding_passinit",Integer.valueOf(0x18e00)); - symbols.put("uname",Integer.valueOf(0x55400)); - symbols.put("symbol_parse_definition",Integer.valueOf(0x2fc00)); - symbols.put("Output_start_segment",Integer.valueOf(0x27a00)); - symbols.put("accept",Integer.valueOf(0x4ea00)); - symbols.put("rint",Integer.valueOf(0x38000)); - symbols.put("basename",Integer.valueOf(0x55200)); - symbols.put("ALU_optional_defined_int",Integer.valueOf(0x15a00)); - symbols.put("output_set_output_filename",Integer.valueOf(0x26c00)); - symbols.put("DynaBuf_get_copy",Integer.valueOf(0x17a00)); - symbols.put("output_set_output_format",Integer.valueOf(0x26800)); - symbols.put("strtod",Integer.valueOf(0x68800)); - symbols.put("Throw_first_pass_warning",Integer.valueOf(0x1ae00)); - symbols.put("Parse_until_eob_or_eof",Integer.valueOf(0x1a400)); - symbols.put("sysctl",Integer.valueOf(0x4dc00)); - symbols.put("fstat",Integer.valueOf(0x62e00)); - symbols.put("fprintf",Integer.valueOf(0x3bc00)); - symbols.put("cputype_passinit",Integer.valueOf(0x17400)); - symbols.put("setpwent",Integer.valueOf(0x54600)); - symbols.put("bind",Integer.valueOf(0x4f000)); - symbols.put("inet_addr",Integer.valueOf(0x56200)); - symbols.put("mkfifo",Integer.valueOf(0x4d400)); - symbols.put("chdir",Integer.valueOf(0x4a600)); - symbols.put("Input_read_keyword",Integer.valueOf(0x1ec00)); - symbols.put("cputype_find",Integer.valueOf(0x17000)); - symbols.put("initgroups",Integer.valueOf(0x56600)); - symbols.put("Macro_parse_definition",Integer.valueOf(0x20600)); - symbols.put("endgrent",Integer.valueOf(0x53e00)); - symbols.put("setsockopt",Integer.valueOf(0x4ee00)); - symbols.put("fseek",Integer.valueOf(0x3d400)); - symbols.put("cos",Integer.valueOf(0x32800)); - symbols.put("memchr",Integer.valueOf(0x5b400)); - symbols.put("output_le16",Integer.valueOf(0x26000)); - symbols.put("umask",Integer.valueOf(0x49694)); - symbols.put("symbol_set_value",Integer.valueOf(0x2f600)); - symbols.put("symbol_find",Integer.valueOf(0x2f400)); - symbols.put("lstat",Integer.valueOf(0x4c200)); - symbols.put("sin",Integer.valueOf(0x32c00)); - symbols.put("setgid",Integer.valueOf(0x50a00)); - symbols.put("signal",Integer.valueOf(0x5ea00)); - symbols.put("output_8",Integer.valueOf(0x25e00)); - symbols.put("strncmp",Integer.valueOf(0x43000)); - symbols.put("DynaBuf_create",Integer.valueOf(0x17600)); - symbols.put("pow",Integer.valueOf(0x33400)); - symbols.put("keyword_is_6502mnemo",Integer.valueOf(0x22600)); - symbols.put("strncpy",Integer.valueOf(0x5f400)); - symbols.put("DynaBuf_add_string",Integer.valueOf(0x17e00)); - symbols.put("Input_read_filename",Integer.valueOf(0x1fc00)); - symbols.put("sync",Integer.valueOf(0x51e00)); - symbols.put("ALU_int_result",Integer.valueOf(0x15c00)); - symbols.put("sendto",Integer.valueOf(0x4f600)); - symbols.put("realloc",Integer.valueOf(0x40600)); - symbols.put("vcpu_get_statement_size",Integer.valueOf(0x28200)); - symbols.put("Section_passinit",Integer.valueOf(0x2e800)); - symbols.put("listen",Integer.valueOf(0x4f200)); - symbols.put("fork",Integer.valueOf(0x62c00)); - symbols.put("sscanf",Integer.valueOf(0x5f000)); - symbols.put("getgrent",Integer.valueOf(0x53a00)); - symbols.put("sigaction",Integer.valueOf(0x52200)); - symbols.put("fread",Integer.valueOf(0x3c600)); - symbols.put("inet_aton",Integer.valueOf(0x55e00)); - symbols.put("Input_read_and_lower_keyword",Integer.valueOf(0x1f400)); - symbols.put("symlink",Integer.valueOf(0x4b400)); - symbols.put("encoding_find",Integer.valueOf(0x19200)); - symbols.put("Tree_add_table",Integer.valueOf(0x30e00)); - symbols.put("DynaBuf_init",Integer.valueOf(0x18200)); - symbols.put("fopen",Integer.valueOf(0x3b800)); - symbols.put("memset",Integer.valueOf(0x48fec)); - symbols.put("main",Integer.valueOf(0x11c00)); - symbols.put("typesystem_want_addr",Integer.valueOf(0x32200)); - symbols.put("Output_end_segment",Integer.valueOf(0x27800)); - symbols.put("Output_fake",Integer.valueOf(0x25c00)); - symbols.put("add_node_to_tree",Integer.valueOf(0x30c00)); - symbols.put("pseudoopcodes_init",Integer.valueOf(0x2e000)); - symbols.put("DynaBuf_append",Integer.valueOf(0x17c00)); - symbols.put("matherr",Integer.valueOf(0x37c00)); - symbols.put("fclose",Integer.valueOf(0x39200)); - symbols.put("inet_ntoa",Integer.valueOf(0x52a00)); - symbols.put("getppid",Integer.valueOf(0x491bc)); - symbols.put("opendir",Integer.valueOf(0x52400)); - symbols.put("getgroups",Integer.valueOf(0x50000)); - symbols.put("keyword_is_c64dtv2mnemo",Integer.valueOf(0x23a00)); - symbols.put("getgrouplist",Integer.valueOf(0x56400)); - symbols.put("seteuid",Integer.valueOf(0x50800)); - symbols.put("keyword_is_65c02mnemo",Integer.valueOf(0x24400)); - symbols.put("putc",Integer.valueOf(0x40000)); - symbols.put("output_initmem",Integer.valueOf(0x26600)); - symbols.put("finite",Integer.valueOf(0x37400)); - symbols.put("herror",Integer.valueOf(0x53000)); - symbols.put("strcmp",Integer.valueOf(0x42c00)); - symbols.put("flow_forloop",Integer.valueOf(0x19400)); - symbols.put("shutdown",Integer.valueOf(0x4f400)); - symbols.put("tan",Integer.valueOf(0x32e00)); - symbols.put("ttyname",Integer.valueOf(0x52000)); - symbols.put("vfiprintf",Integer.valueOf(0x64a00)); - symbols.put("getpwuid",Integer.valueOf(0x54200)); - symbols.put("Input_read_zone_and_keyword",Integer.valueOf(0x1e400)); - symbols.put("dup",Integer.valueOf(0x4c600)); - symbols.put("copysign",Integer.valueOf(0x38800)); - symbols.put("getcwd",Integer.valueOf(0x4b000)); - symbols.put("Section_new_zone",Integer.valueOf(0x2e400)); - symbols.put("encoding_load",Integer.valueOf(0x19000)); - symbols.put("gethostbyname",Integer.valueOf(0x53400)); - symbols.put("getpwnam",Integer.valueOf(0x54000)); - symbols.put("getservbyname",Integer.valueOf(0x52c00)); - symbols.put("atan",Integer.valueOf(0x32400)); - symbols.put("gethostname",Integer.valueOf(0x55a00)); - symbols.put("sprintf",Integer.valueOf(0x42000)); - symbols.put("pseudoopcode_parse",Integer.valueOf(0x2e200)); - symbols.put("Tree_hard_scan",Integer.valueOf(0x31200)); - symbols.put("strtof",Integer.valueOf(0x68a00)); - symbols.put("atexit",Integer.valueOf(0x38a00)); - symbols.put("cliargs_get_next",Integer.valueOf(0x16600)); - symbols.put("output_le32",Integer.valueOf(0x26400)); - symbols.put("asin",Integer.valueOf(0x33200)); - symbols.put("setlocale",Integer.valueOf(0x5b000)); - symbols.put("getpeername",Integer.valueOf(0x50400)); - symbols.put("Throw_serious_error",Integer.valueOf(0x1b200)); - symbols.put("nanf",Integer.valueOf(0x66a00)); - symbols.put("cliargs_init",Integer.valueOf(0x16c00)); - symbols.put("scalbn",Integer.valueOf(0x38400)); - symbols.put("vfork",Integer.valueOf(0x4ca00)); - symbols.put("ALU_liberal_int",Integer.valueOf(0x16200)); - symbols.put("symbols_vicelabels",Integer.valueOf(0x30600)); - symbols.put("fsync",Integer.valueOf(0x51200)); - symbols.put("Mnemo_init",Integer.valueOf(0x22400)); - symbols.put("fputc",Integer.valueOf(0x3c000)); - symbols.put("symbol_set_label",Integer.valueOf(0x2f800)); - symbols.put("DynaBuf_enlarge",Integer.valueOf(0x17800)); - symbols.put("getsockopt",Integer.valueOf(0x4ec00)); - symbols.put("typesystem_force_address_block",Integer.valueOf(0x31c00)); - symbols.put("hstrerror",Integer.valueOf(0x52e00)); - symbols.put("vcpu_end_statement",Integer.valueOf(0x28400)); - symbols.put("nan",Integer.valueOf(0x37e00)); - symbols.put("Macro_parse_call",Integer.valueOf(0x20a00)); - symbols.put("encoding_encode_char",Integer.valueOf(0x18c00)); - symbols.put("Input_new_file",Integer.valueOf(0x1be00)); - symbols.put("localeconv",Integer.valueOf(0x5b200)); - symbols.put("Tree_dump_forest",Integer.valueOf(0x31800)); - symbols.put("Bug_found",Integer.valueOf(0x1b800)); - symbols.put("Output_save_file",Integer.valueOf(0x27000)); - symbols.put("fwrite",Integer.valueOf(0x3dc00)); - symbols.put("vcpu_read_pc",Integer.valueOf(0x28000)); - symbols.put("access",Integer.valueOf(0x4a000)); - symbols.put("ALU_any_int",Integer.valueOf(0x15e00)); - symbols.put("notreallypo_setpc",Integer.valueOf(0x2de00)); - symbols.put("getdents",Integer.valueOf(0x4c400)); - symbols.put("Input_accept_comma",Integer.valueOf(0x20000)); - symbols.put("exit",Integer.valueOf(0x38e00)); - symbols.put("klogctl",Integer.valueOf(0x4d600)); - symbols.put("typesystem_says_address",Integer.valueOf(0x31a00)); - symbols.put("getgrnam",Integer.valueOf(0x53600)); - symbols.put("make_hash",Integer.valueOf(0x30a00)); - symbols.put("output_prefer_cbm_file_format",Integer.valueOf(0x26a00)); - symbols.put("AnyOS_entry",Integer.valueOf(0x28600)); - symbols.put("Macro_init",Integer.valueOf(0x20400)); - symbols.put("ALU_init",Integer.valueOf(0x15800)); - symbols.put("getpwent",Integer.valueOf(0x54400)); - symbols.put("daemon",Integer.valueOf(0x55c00)); - symbols.put("strlen",Integer.valueOf(0x10268)); - symbols.put("open",Integer.valueOf(0x63000)); - symbols.put("Input_get_force_bit",Integer.valueOf(0x20200)); - symbols.put("fputs",Integer.valueOf(0x59a00)); - symbols.put("setsid",Integer.valueOf(0x51000)); - symbols.put("setegid",Integer.valueOf(0x50c00)); - symbols.put("closedir",Integer.valueOf(0x52800)); - symbols.put("cliargs_handle_options",Integer.valueOf(0x16800)); - symbols.put("acos",Integer.valueOf(0x33000)); - symbols.put("output_le24",Integer.valueOf(0x26200)); - symbols.put("vasprintf",Integer.valueOf(0x54c00)); - symbols.put("Input_ensure_EOS",Integer.valueOf(0x1ce00)); - symbols.put("setuid",Integer.valueOf(0x50600)); - symbols.put("mkdir",Integer.valueOf(0x49e00)); - symbols.put("ALU_defined_int",Integer.valueOf(0x16000)); - symbols.put("wcrtomb",Integer.valueOf(0x6ac00)); - symbols.put("close",Integer.valueOf(0x62a00)); - symbols.put("symbols_list",Integer.valueOf(0x30400)); - symbols.put("flow_parse_and_close_file",Integer.valueOf(0x19c00)); - symbols.put("flow_doloop",Integer.valueOf(0x19800)); - symbols.put("_call_helper",Integer.valueOf(0x10284)); - symbols.put("vfprintf",Integer.valueOf(0x48000)); - symbols.put("fputwc",Integer.valueOf(0x65c00)); - symbols.put("raise",Integer.valueOf(0x5e800)); - symbols.put("free",Integer.valueOf(0x3ea00)); - symbols.put("getsockname",Integer.valueOf(0x50200)); + symbols.put("strcpy", Integer.valueOf(0x48000)); + symbols.put("cliargs_get_rest", Integer.valueOf(0x1b800)); + symbols.put("flow_store_doloop_condition", Integer.valueOf(0x1f000)); + symbols.put("fabs", Integer.valueOf(0x39e00)); + symbols.put("typesystem_want_nonaddr", Integer.valueOf(0x39400)); + symbols.put("vcpu_set_pc", Integer.valueOf(0x2d800)); + symbols.put("section_new_cheap_scope", Integer.valueOf(0x36800)); + symbols.put("check_ifdef_condition", Integer.valueOf(0x1ea00)); + symbols.put("input_read_and_lower_keyword", Integer.valueOf(0x25400)); + symbols.put("printf", Integer.valueOf(0x45a00)); + symbols.put("throw_message", Integer.valueOf(0x20600)); + symbols.put("outbuf_set_outfile_limit", Integer.valueOf(0x2b400)); + symbols.put("input_skip_remainder", Integer.valueOf(0x23e00)); + symbols.put("GetByte", Integer.valueOf(0x23400)); + symbols.put("safe_malloc", Integer.valueOf(0x20800)); + symbols.put("output_get_xor", Integer.valueOf(0x2ca00)); + symbols.put("symbol_fix_forward_anon_name", Integer.valueOf(0x38400)); + symbols.put("memmove", Integer.valueOf(0x51600)); + symbols.put("flow_do_while", Integer.valueOf(0x1f400)); + symbols.put("input_unescape_dynabuf", Integer.valueOf(0x24600)); + symbols.put("keyword_is_r65c02_mnemo", Integer.valueOf(0x29a00)); + symbols.put("section_new", Integer.valueOf(0x36600)); + symbols.put("parser_set_nowarn_prefix", Integer.valueOf(0x20200)); + symbols.put("input_quoted_to_dynabuf", Integer.valueOf(0x24200)); + symbols.put("output_passinit", Integer.valueOf(0x2c400)); + symbols.put("dynabuf_enlarge", Integer.valueOf(0x1c600)); + symbols.put("parser_change_nowarn_block_flag", Integer.valueOf(0x1fe00)); + symbols.put("keyword_is_w65c02_mnemo", Integer.valueOf(0x29c00)); + symbols.put("getenv", Integer.valueOf(0x44000)); + symbols.put("floor", Integer.valueOf(0x3ea00)); + symbols.put("input_readscopeandsymbolname", Integer.valueOf(0x25000)); + symbols.put("parser_set_addr_prefix", Integer.valueOf(0x20000)); + symbols.put("pseudopc_end_all", Integer.valueOf(0x2da00)); + symbols.put("parse_assignment", Integer.valueOf(0x20400)); + symbols.put("flow_store_while_condition", Integer.valueOf(0x1f200)); + symbols.put("getpagesize", Integer.valueOf(0x4d7d0)); + symbols.put("outputfile_set_filename", Integer.valueOf(0x2ba00)); + symbols.put("keyword_is_65ce02_mnemo", Integer.valueOf(0x29e00)); + symbols.put("input_read_keyword", Integer.valueOf(0x25200)); + symbols.put("keyword_is_4502_mnemo", Integer.valueOf(0x2a000)); + symbols.put("memcpy", Integer.valueOf(0x4d7e0)); + symbols.put("ALU_any_result", Integer.valueOf(0x1ae00)); + symbols.put("output_setdefault", Integer.valueOf(0x2b000)); + symbols.put("puts", Integer.valueOf(0x46000)); + symbols.put("malloc", Integer.valueOf(0x44600)); + symbols.put("isatty", Integer.valueOf(0x50c00)); + symbols.put("keyword_is_65816_mnemo", Integer.valueOf(0x2a400)); + symbols.put("symbol_define", Integer.valueOf(0x37e00)); + symbols.put("outbuf_set_outfile_start", Integer.valueOf(0x2b200)); + symbols.put("macro_parse_call", Integer.valueOf(0x26e00)); + symbols.put("keyword_is_nmos6502_mnemo", Integer.valueOf(0x29400)); + symbols.put("ACME_finalize", Integer.valueOf(0x11e00)); + symbols.put("output_set_xor", Integer.valueOf(0x2cc00)); + symbols.put("input_accept_comma", Integer.valueOf(0x25a00)); + symbols.put("parse_until_eob_or_eof", Integer.valueOf(0x21000)); + symbols.put("input_read_input_filename", Integer.valueOf(0x25600)); + symbols.put("tree_hard_scan", Integer.valueOf(0x39000)); + symbols.put("fflush", Integer.valueOf(0x40e00)); + symbols.put("cliargs_safe_get_next", Integer.valueOf(0x1b400)); + symbols.put("dynabuf_add_string", Integer.valueOf(0x1cc00)); + symbols.put("encoding_load_from_file", Integer.valueOf(0x1e000)); + symbols.put("dynabuf_append", Integer.valueOf(0x1ca00)); + symbols.put("keyword_is_6502_mnemo", Integer.valueOf(0x29200)); + symbols.put("vcpu_check_and_set_reg_length", Integer.valueOf(0x1bc00)); + symbols.put("strtol", Integer.valueOf(0x48800)); + symbols.put("encoding_passinit", Integer.valueOf(0x1de00)); + symbols.put("rint", Integer.valueOf(0x3f400)); + symbols.put("Throw_first_pass_warning", Integer.valueOf(0x21800)); + symbols.put("outputfile_prefer_cbm_format", Integer.valueOf(0x2b800)); + symbols.put("input_read_output_filename", Integer.valueOf(0x25800)); + symbols.put("includepaths_open_ro", Integer.valueOf(0x26000)); + symbols.put("fstat", Integer.valueOf(0x53600)); + symbols.put("fprintf", Integer.valueOf(0x42000)); + symbols.put("cputype_passinit", Integer.valueOf(0x1be00)); + symbols.put("parse_optional_block", Integer.valueOf(0x21600)); + symbols.put("cputype_find", Integer.valueOf(0x1ba00)); + symbols.put("pseudopc_end", Integer.valueOf(0x2d600)); + symbols.put("fseek", Integer.valueOf(0x43600)); + symbols.put("output_save_file", Integer.valueOf(0x2be00)); + symbols.put("dynabuf_add_bytes", Integer.valueOf(0x1ce00)); + symbols.put("cos", Integer.valueOf(0x39c00)); + symbols.put("memchr", Integer.valueOf(0x51400)); + symbols.put("output_le16", Integer.valueOf(0x22400)); + symbols.put("symbol_find", Integer.valueOf(0x37800)); + symbols.put("sin", Integer.valueOf(0x3a000)); + symbols.put("pseudopc_unpseudo", Integer.valueOf(0x2dc00)); + symbols.put("dynabuf_clear", Integer.valueOf(0x1c400)); + symbols.put("output_8", Integer.valueOf(0x22000)); + symbols.put("strncmp", Integer.valueOf(0x48200)); + symbols.put("pow", Integer.valueOf(0x3a800)); + symbols.put("pseudopc_start", Integer.valueOf(0x2d400)); + symbols.put("realloc", Integer.valueOf(0x46200)); + symbols.put("vcpu_get_statement_size", Integer.valueOf(0x2d000)); + symbols.put("memcmp", Integer.valueOf(0x45400)); + symbols.put("fread", Integer.valueOf(0x42800)); + symbols.put("encoding_find", Integer.valueOf(0x1e200)); + symbols.put("fopen", Integer.valueOf(0x41e00)); + symbols.put("memset", Integer.valueOf(0x4d7f0)); + symbols.put("main", Integer.valueOf(0x12200)); + symbols.put("typesystem_want_addr", Integer.valueOf(0x39600)); + symbols.put("symbol_fix_dynamic_name", Integer.valueOf(0x38600)); + symbols.put("outputfile_set_format", Integer.valueOf(0x2b600)); + symbols.put("matherr", Integer.valueOf(0x3f000)); + symbols.put("fclose", Integer.valueOf(0x40600)); + symbols.put("output_start_segment", Integer.valueOf(0x2c800)); + symbols.put("keyword_is_m65_mnemo", Integer.valueOf(0x2a200)); + symbols.put("includepaths_add", Integer.valueOf(0x25e00)); + symbols.put("input_new_file", Integer.valueOf(0x23200)); + symbols.put("finite", Integer.valueOf(0x3e800)); + symbols.put("symbol_set_object", Integer.valueOf(0x37a00)); + symbols.put("strcmp", Integer.valueOf(0x47e00)); + symbols.put("flow_forloop", Integer.valueOf(0x1ec00)); + symbols.put("tan", Integer.valueOf(0x3a200)); + symbols.put("copysign", Integer.valueOf(0x3fc00)); + symbols.put("atan", Integer.valueOf(0x39800)); + symbols.put("sprintf", Integer.valueOf(0x47400)); + symbols.put("pseudoopcode_parse", Integer.valueOf(0x36400)); + symbols.put("atexit", Integer.valueOf(0x3fe00)); + symbols.put("cliargs_get_next", Integer.valueOf(0x1b000)); + symbols.put("output_le32", Integer.valueOf(0x22c00)); + symbols.put("asin", Integer.valueOf(0x3a600)); + symbols.put("cliargs_init", Integer.valueOf(0x1b600)); + symbols.put("scalbn", Integer.valueOf(0x3f800)); + symbols.put("symbols_vicelabels", Integer.valueOf(0x38200)); + symbols.put("output_be24", Integer.valueOf(0x22600)); + symbols.put("symbol_set_force_bit", Integer.valueOf(0x37c00)); + symbols.put("fputc", Integer.valueOf(0x42200)); + symbols.put("section_finalize", Integer.valueOf(0x36a00)); + symbols.put("keyword_is_65c02_mnemo", Integer.valueOf(0x29800)); + symbols.put("vcpu_end_statement", Integer.valueOf(0x2d200)); + symbols.put("nan", Integer.valueOf(0x3f200)); + symbols.put("encoding_encode_char", Integer.valueOf(0x1dc00)); + symbols.put("config_default", Integer.valueOf(0x1fa00)); + symbols.put("dynabuf_get_copy", Integer.valueOf(0x1c800)); + symbols.put("fwrite", Integer.valueOf(0x43e00)); + symbols.put("vcpu_read_pc", Integer.valueOf(0x2ce00)); + symbols.put("ALU_any_int", Integer.valueOf(0x1a600)); + symbols.put("notreallypo_setpc", Integer.valueOf(0x36200)); + symbols.put("input_ensure_EOS", Integer.valueOf(0x24000)); + symbols.put("output_skip", Integer.valueOf(0x2ae00)); + symbols.put("dynabuf_add_signed_long", Integer.valueOf(0x1d000)); + symbols.put("exit", Integer.valueOf(0x40200)); + symbols.put("output_be16", Integer.valueOf(0x22200)); + symbols.put("macro_parse_definition", Integer.valueOf(0x26a00)); + symbols.put("tree_easy_scan", Integer.valueOf(0x38c00)); + symbols.put("tree_dump_forest", Integer.valueOf(0x39200)); + symbols.put("pseudopc_get_context", Integer.valueOf(0x2de00)); + symbols.put("output_createbuffer", Integer.valueOf(0x2bc00)); + symbols.put("AnyOS_entry", Integer.valueOf(0x2e000)); + symbols.put("dynabuf_to_lower", Integer.valueOf(0x1d200)); + symbols.put("keyword_is_c64dtv2_mnemo", Integer.valueOf(0x29600)); + symbols.put("strlen", Integer.valueOf(0x10268)); + symbols.put("input_get_force_bit", Integer.valueOf(0x25c00)); + symbols.put("input_append_symbol_name_to_global_dynabuf", Integer.valueOf(0x24e00)); + symbols.put("cliargs_handle_options", Integer.valueOf(0x1b200)); + symbols.put("acos", Integer.valueOf(0x3a400)); + symbols.put("output_le24", Integer.valueOf(0x22800)); + symbols.put("ALU_addrmode_int", Integer.valueOf(0x1ac00)); + symbols.put("section_passinit", Integer.valueOf(0x36c00)); + symbols.put("output_end_segment", Integer.valueOf(0x2c600)); + symbols.put("output_object", Integer.valueOf(0x21c00)); + symbols.put("output_be32", Integer.valueOf(0x22a00)); + symbols.put("input_skip_or_store_block", Integer.valueOf(0x24a00)); + symbols.put("ALU_defined_int", Integer.valueOf(0x1a800)); + symbols.put("symbols_list", Integer.valueOf(0x38000)); + symbols.put("parser_change_addr_block_flag", Integer.valueOf(0x1fc00)); + symbols.put("flow_parse_and_close_file", Integer.valueOf(0x1f600)); + symbols.put("_call_helper", Integer.valueOf(0x10284)); + symbols.put("BUG", Integer.valueOf(0x21a00)); + symbols.put("free", Integer.valueOf(0x44800)); + } + + public int lookupSymbol(String symbol) { + Integer i = (Integer) symbols.get(symbol); + return i == null ? -1 : i.intValue(); } - public int lookupSymbol(String symbol) { Integer i = (Integer) symbols.get(symbol); return i==null ? -1 : i.intValue(); } } diff --git a/Platform/Apple/tools/jace/src/test/java/jace/cpu/Full65C02Test.java b/Platform/Apple/tools/jace/src/test/java/jace/cpu/Full65C02Test.java index 5e611207..bfa7dd48 100644 --- a/Platform/Apple/tools/jace/src/test/java/jace/cpu/Full65C02Test.java +++ b/Platform/Apple/tools/jace/src/test/java/jace/cpu/Full65C02Test.java @@ -170,7 +170,6 @@ public class Full65C02Test { .assertA(0x00) .assertFlags(IS_ZERO, OVERFLOW_CLEAR, CARRY_SET, POSITIVE) // Now check boundary conditions on indexed addressing for timing differences - .setTrace(true) .add("LDX #$FF") .assertTimed("ADC $10FF,X", 5) .add("LDY #$FF") @@ -682,7 +681,6 @@ public class Full65C02Test { new TestProgram() // Zero and Negative flags .add("LDA #0") - .setTrace(true) .assertTimed("BEQ *+2",3) .assertTimed("BNE *+2",2) .assertTimed("BPL *+2",3) @@ -791,7 +789,6 @@ public class Full65C02Test { .test("", "RTS did not return to the correct address") .add(""" start - +traceOn jsr test ret """)